TraceLog AdaptiveWriter License: Apache 2.0

Platforms: Linux | iOS | macOS | watchOS | tvOS Swift 5.0 Version   travis-ci.org

概述

Writer 接口的实现,用于 TraceLog 日志系统,可将日志记录到其运行平台上的系统日志工具。

有关更多详细信息,请参阅 TraceLog (https://github.com/tonystone/tracelog)。

用法

TraceLog 可以配置多个自定义日志写入器,这些写入器负责将日志语句输出到所需的位置。 默认情况下,它会使用 ConsoleWriter 进行配置,该写入器会输出到 stdout。 要安装 AdaptiveWriter 以替换 ConsoleWriter,只需创建一个实例并将其传递给 TraceLog 的 configure 方法即可。

    TraceLog.configure(writers: [AdaptiveWriter()])

AdaptiveWriter 在每个平台上使用默认值(进程名称)作为子系统(Unified Logging 中的 subsystem 和 systemd journal 中的 SYSLOG_IDENTIFIER)来记录消息。 该值可以在 init 时通过传递 subsystem 参数来覆盖。 例如

    TraceLog.configure(writers: [AdaptiveWriter(subsystem: "CustomSubsystemName")])

由于 TraceLog 和底层日志系统的 LogLevel 可能不同,AdaptiveWriter 使用转换表将 TraceLog 定义的级别(例如 TraceLog.LogLevel.info)转换为平台级别(例如 Darwin Unified Logging System 中的 OSLogType.default)。

AdaptiveWriter 包含每个平台的默认转换表。

Apple Unified Logging System - 转换表

TraceLog.LogLevel OSLogType
.error -> .error
.warning -> .default
.info -> .default
.trace1 -> .debug
.trace2 -> .debug
.trace3 -> .debug
.trace4 -> .debug

Linux Systemd Journal - 转换表

TraceLog.LogLevel PRIORITY
.error -> LOG_ERR
.warning -> LOG_WARNING
.info -> LOG_INFO
.trace1 -> LOG_DEBUG
.trace2 -> LOG_DEBUG
.trace3 -> LOG_DEBUG
.trace4 -> LOG_DEBUG

如果默认表不适用于您的特定用例,AdaptiveWriter 允许您在创建时覆盖默认转换表。 以下是一些示例

设置一个空表会将所有 TraceLog 级别转换为正在使用的平台的默认级别。 在 Darwin 上,它是 OSLogType.default,在 Linux 上,该值为 LOG_INFO

    ///
    /// Linux/Darwin
    ///
    let adaptiveWriter = AdaptiveWriter(logLevelConversion: [:])

设置一个或多个级别将设置指定的级别,所有未指定的级别都将转换为平台默认级别。 要设置一个值,您必须将系统定义的值包装在 AdaptiveWriter 的 Platform.LogLevel 类型中。 这将在每个平台上转换为正确的类型。

    ///
    /// Darwin Example
    ///
    let adaptiveWriter = AdaptiveWriter(logLevelConversion: [.error: Platform.LogLevel(OSLogType.error.rawValue)])

您也可以指定一个完整的转换表来更改所有值。

    ///
    /// Darwin Example
    ///
    let darwinLogConversionTable: [TraceLog.LogLevel: Platform.LogLevel] = [
        .error:   Platform.LogLevel(OSLogType.default.rawValue),
        .warning: Platform.LogLevel(OSLogType.default.rawValue),
        .info:    Platform.LogLevel(OSLogType.default.rawValue),
        .trace1:  Platform.LogLevel(OSLogType.debug.rawValue),
        .trace2:  Platform.LogLevel(OSLogType.debug.rawValue),
        .trace3:  Platform.LogLevel(OSLogType.debug.rawValue),
        .trace4:  Platform.LogLevel(OSLogType.debug.rawValue)
    ]

    let adaptiveWriter = AdaptiveWriter(logLevelConversion: darwinLogConversionTable)
    ///
    /// Linux Example
    ///
    let linuxLogConversionTable: [TraceLog.LogLevel: Platform.LogLevel] = [
        .error:   Platform.LogLevel(LOG_INFO),
        .warning: Platform.LogLevel(LOG_INFO),
        .info:    Platform.LogLevel(LOG_INFO),
        .trace1:  Platform.LogLevel(LOG_DEBUG),
        .trace2:  Platform.LogLevel(LOG_DEBUG),
        .trace3:  Platform.LogLevel(LOG_DEBUG),
        .trace4:  Platform.LogLevel(LOG_DEBUG)
    ]

    let adaptiveWriter = AdaptiveWriter(logLevelConversion: linuxLogConversionTable)

最低要求

构建环境

平台 Swift Swift 构建 Xcode
Linux 5.0
OSX 5.0 Xcode 10.x

注意:在 Linux 上编译需要构建系统上安装 libsystemd-dev。 使用 apt-get install libsystemd-dev 安装它。

最低运行时版本

iOS OS X tvOS watchOS Linux
10.0 10.12 10.0 3.0 Ubuntu 14.04, 16.04, 16.10

安装(Swift Package Manager)

TraceLogAdaptiveWriter 支持通过 Swift Package Manager 在所有 Apple OS 变体以及 Linux 上进行依赖项管理。

有关更多信息,请参阅 Swift Package Manager

安装 (CocoaPods)

TraceLog 可通过 CocoaPods 获得。 只需将以下行添加到您的 Podfile

pod "TraceLog", "~> 5.0.0"
pod "TraceLogAdaptiveWriter"

贡献者

许可证

TraceLogAdaptiveWriter 在 Apache License, Version 2.0 下发布