swift-log-file

一个兼容 SwiftLog 的文件日志处理器。

目前仅支持 iOS。

示例:仅记录到文件

let logFileURL = URL(/* your local log file here */)
let logger = try FileLogging.logger(label: "Foobar", localFile: logFileURL)
logger.error("Test Test Test")

示例:同时记录到标准输出(如果使用 Xcode,则是 Xcode 控制台)和一个文件。

let logFileURL = try getDocumentsDirectory().appendingPathComponent(logFileName)
let fileLogger = try FileLogging(to: logFileURL)

LoggingSystem.bootstrap { label in
    let handlers:[LogHandler] = [
        FileLogHandler(label: label, fileLogger: fileLogger),
        StreamLogHandler.standardOutput(label: label)
    ]

    return MultiplexLogHandler(handlers)
}

let logger = Logger(label: "Test")

注意在最后一个示例中,如果使用 LoggingSystem.bootstrap,请确保在 LoggingSystem.bootstrap 使用之后创建 Logger(否则您将不会获得 LoggingSystem.bootstrap 的效果)。

示例:使用 XCGLogger

XCGLogger 支持轮转文件日志等功能。

let logFileURL = URL(/* your local log file here */)
let xcgLogger = /* Make your XCGLogger, using logFileURL */
let logger = XCGLogging.logger(label: "Test", logger: xcgLogger)
logger.error("Test Test Test")

示例:使用 XCGLogger 同时记录到标准输出(如果使用 Xcode,则是 Xcode 控制台)和一个文件。

let logFileURL = try getDocumentsDirectory().appendingPathComponent(logFileName)
let xcgLogger = /* Make your XCGLogger, using logFileURL */

LoggingSystem.bootstrap { label in
    let handlers:[LogHandler] = [
        XCGLoggerHandler(label: label, logger: xcgLogger),
        StreamLogHandler.standardOutput(label: label)
    ]

    return MultiplexLogHandler(handlers)
}

let logger = Logger(label: "Test")

更多示例,请参见单元测试,并参考 apple/swift-log 的 README