Swift:
मानक त्रुटि के लिए लिखना

कैसे:

Swift में, मानक त्रुटि में लिखना सीधे stderr तक पहुँच के लिए FileHandle क्लास का उपयोग करके किया जा सकता है। यहाँ एक साधारण उदाहरण है:

import Foundation

// एक संदेश परिभाषित करें
let errorMessage = "एक त्रुटि उत्पन्न हुई।\n"

// संदेश को डेटा में परिवर्तित करें
if let data = errorMessage.data(using: .utf8) {
    // त्रुटि संदेश को stderr में लिखें
    FileHandle.standardError.write(data)
}

stderr को आउटपुट (आमतौर पर एक कंसोल या टर्मिनल में देखा जाता है):

एक त्रुटि उत्पन्न हुई।

अधिक जटिल लॉगिंग के लिए या बाहरी लाइब्रेरी के साथ काम करते समय, आप SwiftLog जैसी तृतीय-पक्ष लाइब्रेरी का उपयोग करने पर विचार करेंगे। हालाँकि, SwiftLog सीधे तौर पर बॉक्स से बाहर stderr में नहीं लिखता, आप इसे प्राप्त करने के लिए एक कस्टम लॉगिंग बैकेंड को लागू कर सकते हैं। यहाँ stderr में लिखने वाले कस्टम लॉग हैंडलर को परिभाषित करने का एक सरलीकृत उदाहरण है:

पहले, Package.swift में अपनी परियोजना निर्भरताओं में SwiftLog जोड़ें:

// swift-tools-version:5.3

import PackageDescription

let package = Package(
    name: "YourPackageName",
    dependencies: [
        .package(url: "https://github.com/apple/swift-log.git", from: "1.0.0"),
    ],
    targets: [
        .target(
            name: "YourTargetName",
            dependencies: [
                .product(name: "Logging", package: "swift-log"),
            ]),
    ]
)

फिर, stderr में लिखने वाला कस्टम लॉग हैंडलर लागू करें:

import Logging
import Foundation

struct StderrLogHandler: LogHandler {
    let label: String
    
    var logLevel: Logger.Level = .info
    
    func log(level: Logger.Level, message: Logger.Message, metadata: Logger.Metadata?, source: String, file: String, function: String, line: UInt) {
        let output = "\(message)\n"
        if let data = output.data(using: .utf8) {
            FileHandle.standardError.write(data)
        }
    }
    
    subscript(metadataKey metadataKey: String) -> Logger.Metadata.Value? {
        get { return nil }
        set(newValue) { }
    }
    
    var metadata: Logger.Metadata {
        get { return [:] }
        set(newMetadata) { }
    }
}

// उपयोग
LoggingSystem.bootstrap(StderrLogHandler.init)
let logger = Logger(label: "com.example.yourapp")

logger.error("यह एक त्रुटि संदेश है")

stderr को आउटपुट:

यह एक त्रुटि संदेश है

यह कस्टम हैंडलर आपको अपने SwiftLog त्रुटि संदेशों को सीधे मानक त्रुटि में मार्गनिर्देश करने की अनुमति देता है, जिससे आपके एप्लीकेशन द्वारा उत्पन्न अन्य लॉग संदेशों के साथ सहजता से एकीकृत हो सकते हैं।