Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

class JsonLogger

public class JsonLogger <: Logger {
    public init(output: OutputStream)
}

功能:此类实现了输出 JSON 格式的日志打印功能,形如 {"time":"2024-07-27T11:51:59+08:00","level":"INFO","msg":"foo","name":"bar"}

父类型:

prop level

public mut prop level: LogLevel

功能:获取和修改日志打印级别。

类型:LogLevel

示例:

import stdx.log.*
import stdx.logger.*
import std.env.*

main() {
    // 创建JsonLogger实例,使用标准输出流
    let logger = JsonLogger(getStdOut())

    // 获取当前的日志级别
    let currentLevel = logger.level
    println("默认日志级别: ${currentLevel}")

    // 设置一个新的日志级别
    logger.level = LogLevel.DEBUG

    // 再次获取日志级别以确认更改
    let updatedLevel = logger.level
    println("更新后的日志级别: ${updatedLevel}")

    return 0
}

运行结果:

默认日志级别: INFO
更新后的日志级别: DEBUG

init(OutputStream)

public init(output: OutputStream)

功能:创建 JsonLogger 对象。

参数:

  • output: OutputStream - 绑定的输出流,日志格式化后将写入该输出流。

示例:

import stdx.logger.*
import std.env.*

main() {
    // 使用标准输出流创建JsonLogger实例
    let logger = JsonLogger(getStdOut())
    return 0
}

func close()

public func close(): Unit

功能:关闭 Logger。

示例:

import stdx.logger.*
import std.env.*

main() {
    // 创建JsonLogger实例
    let logger = JsonLogger(getStdOut())

    // 检查logger是否关闭
    let isClosedBefore = logger.isClosed()
    println("关闭前状态: ${isClosedBefore}")

    // 关闭logger
    logger.close()

    // 再次检查是否关闭
    let isClosedAfter = logger.isClosed()
    println("关闭后状态: ${isClosedAfter}")

    return 0
}

运行结果:

关闭前状态: false
关闭后状态: true

func isClosed()

public func isClosed(): Bool

功能:判断当前 Logger 是否关闭。

返回值:

  • Bool - 是否关闭。

示例:

参见 func close 示例。

func log(LogRecord)

public func log(record: LogRecord): Unit

功能:打印日志的通用函数。

参数:

示例:

import stdx.log.*
import stdx.logger.*
import std.env.*
import std.time.*

main() {
    // 创建JsonLogger实例
    let logger = JsonLogger(getStdOut())

    // 创建一个LogRecord实例
    let dateTime = DateTime.of(year: 2026, month: 1, dayOfMonth: 1, timeZone: TimeZone.UTC)
    let logRecord = LogRecord(dateTime, LogLevel.INFO, "这是一个测试消息")

    // 使用log方法记录日志
    logger.log(logRecord)
    return 0
}

运行结果:

{"time":"2026-01-01T00:00:00Z","level":"INFO","msg":"这是一个测试消息"}

func withAttrs(Array<Attr>)

public func withAttrs(attrs: Array<Attr>): Logger

功能:创建当前对象的副本,新的副本会包含指定的属性。

参数:

  • attrs: Array<Attr> - 日志数据键值对属性。

返回值:

示例:

import stdx.log.*
import stdx.logger.*
import std.env.*
import std.time.*

main() {
    // 创建JsonLogger实例
    let logger = JsonLogger(getStdOut())

    // 创建一个LogRecord实例
    let dateTime = DateTime.of(year: 2026, month: 1, dayOfMonth: 1, timeZone: TimeZone.UTC)
    let logRecord = LogRecord(dateTime, LogLevel.INFO, "这是一个测试消息")

    // 使用log方法记录日志,发现日志中不包含属性
    logger.log(logRecord)

    // 创建属性数组
    let attr1: (String, LogValue) = ("key1", "value1")
    let attr2: (String, LogValue) = ("key2", 123)
    let attrs = [attr1, attr2]

    // 使用withAttrs方法创建带属性的logger副本
    let loggerWithAttrs = logger.withAttrs(attrs)

    // 再次使用log方法记录日志,发现日志中包含属性
    loggerWithAttrs.log(logRecord)
    return 0
}

运行结果:

{"time":"2026-01-01T00:00:00Z","level":"INFO","msg":"这是一个测试消息"}
{"time":"2026-01-01T00:00:00Z","level":"INFO","msg":"这是一个测试消息","key1":"value1","key2":123}

class SimpleLogger

public class SimpleLogger <: Logger {
    public init(output: OutputStream)
}

功能:此类实现了输出文本格式的日志打印功能,形如 2024-07-27T11:50:47.6616733+08:00 INFO foo name="bar"

父类型:

prop level

public mut prop level: LogLevel

功能:获取和修改日志打印级别。

类型:LogLevel

示例:

import stdx.log.*
import stdx.logger.*
import std.env.*

main() {
    // 创建SimpleLogger实例,使用标准输出流
    let logger = SimpleLogger(getStdOut())

    // 获取当前的日志级别
    let currentLevel = logger.level
    println("默认日志级别: ${currentLevel}")

    // 设置一个新的日志级别
    logger.level = LogLevel.DEBUG

    // 再次获取日志级别以确认更改
    let updatedLevel = logger.level
    println("更新后的日志级别: ${updatedLevel}")

    return 0
}

运行结果:

默认日志级别: INFO
更新后的日志级别: DEBUG

init(OutputStream)

public init(output: OutputStream)

功能:创建 SimpleLogger 对象。

参数:

  • output: OutputStream - 绑定的输出流,日志格式化后将写入该输出流。

示例:

import stdx.logger.*
import std.env.*

main() {
    // 使用标准输出流创建SimpleLogger实例
    let logger = SimpleLogger(getStdOut())
    return 0
}

func close()

public func close(): Unit

功能:关闭 Logger。

示例:

import stdx.logger.*
import std.env.*

main() {
    // 创建SimpleLogger实例
    let logger = SimpleLogger(getStdOut())

    // 检查logger是否关闭
    let isClosedBefore = logger.isClosed()
    println("关闭前状态: ${isClosedBefore}")

    // 关闭logger
    logger.close()

    // 再次检查是否关闭
    let isClosedAfter = logger.isClosed()
    println("关闭后状态: ${isClosedAfter}")

    return 0
}

运行结果:

关闭前状态: false
关闭后状态: true

func isClosed()

public func isClosed(): Bool

功能:判断当前 Logger 是否关闭。

返回值:

  • Bool - 是否关闭。

示例:

参见 func close 示例。

func log(LogRecord)

public func log(record: LogRecord): Unit

功能:打印日志的通用函数。

参数:

示例:

import stdx.log.*
import stdx.logger.*
import std.env.*
import std.time.*

main() {
    // 创建SimpleLogger实例
    let logger = SimpleLogger(getStdOut())

    // 创建一个LogRecord实例
    let dateTime = DateTime.of(year: 2026, month: 1, dayOfMonth: 1, timeZone: TimeZone.UTC)
    let logRecord = LogRecord(dateTime, LogLevel.INFO, "这是一个测试消息")

    // 使用log方法记录日志
    logger.log(logRecord)
    return 0
}

运行结果:

2026-01-01T00:00:00Z INFO 这是一个测试消息

func withAttrs(Array<Attr>)

public func withAttrs(attrs: Array<Attr>): Logger

功能:创建当前对象的副本,新的副本会包含指定的属性。

参数:

  • attrs: Array<Attr> - 日志数据键值对属性。

返回值:

示例:

import stdx.log.*
import stdx.logger.*
import std.env.*
import std.time.*

main() {
    // 创建SimpleLogger实例
    let logger = SimpleLogger(getStdOut())

    // 创建一个LogRecord实例
    let dateTime = DateTime.of(year: 2026, month: 1, dayOfMonth: 1, timeZone: TimeZone.UTC)
    let logRecord = LogRecord(dateTime, LogLevel.INFO, "这是一个测试消息")

    // 使用log方法记录日志,发现日志中不包含属性
    logger.log(logRecord)

    // 创建属性数组
    let attr1: (String, LogValue) = ("key1", "value1")
    let attr2: (String, LogValue) = ("key2", 123)
    let attrs = [attr1, attr2]

    // 使用withAttrs方法创建带属性的logger副本
    let loggerWithAttrs = logger.withAttrs(attrs)

    // 再次使用log方法记录日志,发现日志中包含属性
    loggerWithAttrs.log(logRecord)
    return 0
}

运行结果:

2026-01-01T00:00:00Z INFO 这是一个测试消息 
2026-01-01T00:00:00Z INFO 这是一个测试消息 key1="value1" key2=123

class TextLogger

public class TextLogger <: Logger {
    public init(output: OutputStream)
}

功能:此类实现了输出文本格式的日志打印功能,形如 time=2024-07-27T11:52:40.3226881+08:00 level="INFO" msg="foo" name="bar"

父类型:

prop level

public mut prop level: LogLevel

功能:获取和修改日志打印级别。

类型:LogLevel

示例:

import stdx.log.*
import stdx.logger.*
import std.env.*

main() {
    // 创建TextLogger实例,使用标准输出流
    let logger = TextLogger(getStdOut())

    // 获取当前的日志级别
    let currentLevel = logger.level
    println("默认日志级别: ${currentLevel}")

    // 设置一个新的日志级别
    logger.level = LogLevel.DEBUG

    // 再次获取日志级别以确认更改
    let updatedLevel = logger.level
    println("更新后的日志级别: ${updatedLevel}")

    return 0
}

运行结果:

默认日志级别: INFO
更新后的日志级别: DEBUG

init(OutputStream)

public init(output: OutputStream)

功能:创建 TextLogger 对象。

参数:

  • output: OutputStream - 绑定的输出流,日志格式化后将写入该输出流。

示例:

import stdx.logger.*
import std.env.*

main() {
    // 使用标准输出流创建TextLogger实例
    let logger = TextLogger(getStdOut())
    return 0
}

func close()

public func close(): Unit

功能:关闭 Logger。

示例:

import stdx.logger.*
import std.env.*

main() {
    // 创建TextLogger实例
    let logger = TextLogger(getStdOut())

    // 检查logger是否关闭
    let isClosedBefore = logger.isClosed()
    println("关闭前状态: ${isClosedBefore}")

    // 关闭logger
    logger.close()

    // 再次检查是否关闭
    let isClosedAfter = logger.isClosed()
    println("关闭后状态: ${isClosedAfter}")

    return 0
}

运行结果:

关闭前状态: false
关闭后状态: true

func isClosed()

public func isClosed(): Bool

功能:判断当前 Logger 是否关闭。

返回值:

  • Bool - 是否关闭。

示例:

参见 func close 示例。

func log(LogRecord)

public func log(record: LogRecord): Unit

功能:打印日志的通用函数。

参数:

示例:

import stdx.log.*
import stdx.logger.*
import std.env.*
import std.time.*

main() {
    // 创建TextLogger实例
    let logger = TextLogger(getStdOut())

    // 创建一个LogRecord实例
    let dateTime = DateTime.of(year: 2026, month: 1, dayOfMonth: 1, timeZone: TimeZone.UTC)
    let logRecord = LogRecord(dateTime, LogLevel.INFO, "这是一个测试消息")

    // 使用log方法记录日志
    logger.log(logRecord)
    return 0
}

运行结果:

time=2026-01-01T00:00:00Z level="INFO" msg="这是一个测试消息"

func withAttrs(Array<Attr>)

public func withAttrs(attrs: Array<Attr>): Logger

功能:创建当前对象的副本,新的副本会包含指定的属性。

参数:

  • attrs: Array<Attr> - 日志数据键值对属性。

返回值:

示例:

import stdx.log.*
import stdx.logger.*
import std.env.*
import std.time.*

main() {
    // 创建TextLogger实例
    let logger = TextLogger(getStdOut())

    // 创建一个LogRecord实例
    let dateTime = DateTime.of(year: 2026, month: 1, dayOfMonth: 1, timeZone: TimeZone.UTC)
    let logRecord = LogRecord(dateTime, LogLevel.INFO, "这是一个测试消息")

    // 使用log方法记录日志,发现日志中不包含属性
    logger.log(logRecord)

    // 创建属性数组
    let attr1: (String, LogValue) = ("key1", "value1")
    let attr2: (String, LogValue) = ("key2", 123)
    let attrs = [attr1, attr2]

    // 使用withAttrs方法创建带属性的logger副本
    let loggerWithAttrs = logger.withAttrs(attrs)

    // 再次使用log方法记录日志,发现日志中包含属性
    loggerWithAttrs.log(logRecord)
    return 0
}

运行结果:

time=2026-01-01T00:00:00Z level="INFO" msg="这是一个测试消息"
time=2026-01-01T00:00:00Z level="INFO" msg="这是一个测试消息" key1="value1" key2=123