TraceLogAdaptiveWriter 2.0.0

TraceLogAdaptiveWriter 2.0.0

Tony Stone 维护。



  • 作者
  • Tony Stone

TraceLog AdaptiveWriter License: Apache 2.0

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

概述

TraceLog日志系统实现的Writer,该系统能将日志记录到其所在平台的系统日志设施。

  • Apple统一日志(Darwin) - 在Apple平台上,AdaptiveWriter将写入统一日志系统。
  • Linux systemd日志(Linux) - 在Linux平台上,AdaptiveWriter写入systemd日志。

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

使用方法

TraceLog可以通过配置多个自定义日志写入器来配置,这些写入器将日志语句输出到所需位置。默认情况下,它通过配置ConsoleWriter并将其传递给TraceLog的配置方法来自身配置。要安装并替换ConsoleWriterAdaptiveWriter,只需创建一个实例并将其传递给TraceLog的配置方法。

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

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

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

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

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

Apple统一日志系统 - 转换表

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

Linux Systemd日志 - 转换表

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 包管理器)

TraceLogAdaptiveWriter 支持 Swift 包管理器在所有 Apple 操作系统版本以及 Linux 上的依赖关系管理。

有关更多信息,请参阅 Swift 包管理器

安装(CocoaPods)

TraceLog 通过 CocoaPods 提供。只需将以下行添加到您的 Podfile 中

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

鸣谢

许可

TraceLogAdaptiveWriter 在 Apache License, Version 2.0 许可下发布。