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 轉送方式
串流內容