登录 Go

Fuchsia 上的 Go 程序通常使用 syslog 软件包及其 syslog.Infof() 函数。

如需了解详情,请参阅与语言无关的日志记录文档 了解如何记录和查看日志。

要求

GN 依赖项

通过在 BUILD.gn 中添加 deps 补充,可以添加必要的软件包:

deps = [
    "//src/lib/component",
    "//src/lib/syslog/go",
]

如需详细了解如何在 Fuchsia 中构建 Go,请参阅 Go:概览

组件清单依赖项

通过添加 在组件清单中添加以下代码:

{
  include: [
    "syslog/client.shard.cml"
  ],
  ...
}

如果 LogSink 连接失败,syslog 库将回退到 stderr

初始化

在不使用任何标记的情况下进行初始化将默认使用进程名称。

import (
    "go.fuchsia.dev/fuchsia/src/lib/component"
    syslog "go.fuchsia.dev/fuchsia/src/lib/syslog/go"
)

func main() {
  ctx := component.NewContextFromStartupInfo()
  {
    // Global tags, max 4 tags can be passed. Every log message is tagged with these.
    l, err := syslog.NewLoggerWithDefaults(ctx.Connector(), "my_tag")
    if err != nil {
      panic(err)
    }
    syslog.SetDefaultLogger(l)
  }
}

录制消息

日志方法有两个变体:LevelfLevelTf(例如 InfofInfoTf)。变体 具有 T 的每个方法接受消息的附加标记。

syslog.Infof("my msg: %d", 10);          // maps to INFO

// Allow message specific tagging. This message is going to be tagged with
// this local tag and any global tag passed during initialization.
syslog.InfoTf("tag", "my msg: %d", 10);

syslog.Warnf("my msg: %d", 10);          // maps to WARN
syslog.WarnTf("tag", "my msg: %d", 10);

syslog.Errorf("my msg: %d", 10);         // maps to ERROR
syslog.ErrorTf("tag", "my msg: %d", 10);

syslog.Fatalf("my msg: %d", 10);         // maps to FATAL
syslog.FatalTf("tag", "my msg: %d", 10);

标准视频流

fmt.Printf()fmt.Sprintf() 等会转为标准输出 (stdout) 和标准错误 (stderr)。

请参阅 stdoutstderr,详细了解与语言无关的日志记录文档中的 stdio 路由 音频流