2 回答

TA貢獻1911條經驗 獲得超7個贊
這里有兩個選項:
使用 log.SetOutput 設置自定義編寫器。
或者使用 fmt 包而不是只打印到 stdout 或其他地方 - stdlib 日志包沒有做太多,它很容易創建你自己的日志包,它以自定義時間格式輸出到 stdout(或日志文件) . 例如,這里有幾行這樣的包:
package log
import (
? ? "fmt"
? ? "time"
)
var TimeFormat = "2006-02-01T15:04:05Z"
func Printf(format string, args ...interface{}) {
? ? format = fmt.Sprintf("%s %s", time.Now().Format(TimeFormat), format)
? ? fmt.Printf(format, args...)
}
如果您有特定需求,我建議您自己執行此操作,并使用 fmt.Printf 輸出到標準輸出。你真的不需要第三方日志包。

TA貢獻1890條經驗 獲得超9個贊
您可以log.SetOutput(...)
與使用所需格式(例如內置 RFC3999 或您選擇的格式之一)打印條目的參數編寫器一起使用,例如:
const timeFormat = time.RFC3339
type logWriter struct{}
func (lw *logWriter) Write(bs []byte) (int, error) {
? return fmt.Print(time.Now().UTC().Format(timeFormat), " | ", string(bs))
}
func main() {
? log.SetFlags(0)? ? ? ? ? ? ? ?// Omit default prefixes.
? log.SetOutput(new(logWriter)) // Use our custom writer.
? log.Printf("Hello, %s!", "World")
? // 2018-09-18T14:50:40Z | Hello, World!
}
您可以使用不同的格式更改時間戳,例如:
const timeFormat = "Jan 2, 2006 at 3:04:05pm (UTC)"
// ...
? log.Printf("Hello, %s!", "World")
? // Sep 18, 2018 at 2:52:26pm (UTC) | Hello, World!
- 2 回答
- 0 關注
- 206 瀏覽
添加回答
舉報