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)
}
}
录制消息
日志方法有两个变体:Levelf
和 LevelTf
(例如 Infof
和 InfoTf
)。变体
具有 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
)。
请参阅 stdout
和stderr
,详细了解与语言无关的日志记录文档中的 stdio 路由
音频流