登入 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)。

請參閱「stdout」和閱讀各語言通用記錄文件中的 stderr,進一步瞭解 stdio 轉送方式 串流內容