Skip to content

配置驱动构建 ​

当 level、目标名、输出方式或队列策略应由部署配置决定时,使用这一流程。

解析、构建、记录 ​

moonbit
let raw = "{\"min_level\":\"info\",\"target\":\"service\",\"sink\":{\"kind\":\"text_console\",\"text_formatter\":{\"show_timestamp\":false,\"separator\":\" | \"}},\"queue\":{\"max_pending\":64,\"overflow\":\"DropOldest\"}}"

let config = @log.parse_logger_config_text(raw) catch {
  err => {
    ignore(err)
    println("invalid logger configuration")
    return
  }
}

let logger = @log.build_logger(config)
logger.info("configured logger ready")
ignore(logger.flush())

解析先验证数据,再构造运行时 Logger。真实部署应将原始配置放在应用代码之外,并在配置进入进程的边界处理错误。

不以 { 或 [ 开头的文本按 YAML 解析,字段和校验规则与 JSON 相同:

moonbit
let raw =
  #|min_level: info
  #|target: service
  #|sink:
  #|  kind: text_console
  
let config = @log.parse_logger_config_text(raw) catch {
  err => {
    ignore(err)
    println("invalid logger configuration")
    return
  }
}

JSON 解析失败的消息以 Invalid JSON: 开头,YAML 解析失败以 Invalid config: 开头。

运行仓库示例 ​

bash
moon run examples/config_build

下一步 ​

由仓库中的 VitePress 文档构建。