LoginSignup
8
8

More than 3 years have passed since last update.

Go ログ出力&ローテーション

Last updated at Posted at 2020-02-23

Go言語のログ用パッケージlogruslumberjackの利用方法についてまとめる。(N番煎じ記事)

インストール

$ go get github.com/sirupsen/logrus // logrus
$ go get gopkg.in/natefinch/lumberjack.v2 // lumberjack

インポート

import (
  log "github.com/sirupsen/logrus"
  "gopkg.in/natefinch/lumberjack.v2"
)

ログ出力フォーマットの指定

JSON

log.SetFormatter(&log.JSONFormatter{})

標準TXT

log.SetFormatter(&log.TextFormatter{}) 

ログレベル指定

セットしたレベル以上のログを出力する。

// Warningレベル以上
log.SetLevel(log.WarnLevel)

ログレベル別出力

log.Trace("Something very low level.")
log.Debug("Useful debugging information.")
log.Info("Something noteworthy happened!")
log.Warn("You should probably take a look at this.")
log.Error("Something failed but I'm not quitting.")
log.Fatal("Bye.")
log.Panic("I'm bailing.")

出力情報

  • 呼び出し元情報
  log.SetReportCaller(true)
  • 変数の埋め込み
  log.WithFields(log.Fields{
      "animal": "walrus",
      "size":   10,
    }).Info("A group of walrus emerges from the ocean")
  • 共通的に使用する変数の埋め込み

    contextLogger := log.WithFields(log.Fields{
        "common": "this is a common field",
        "other": "I also should be logged always",
    })
    
    contextLogger.Info("I'll be logged with common and other field")
    contextLogger.Info("Me too")
    

    出力先の指定

    標準出力

    log.Out = os.Stdout
    

    ファイル出力

    import (
        "os"
        log "github.com/sirupsen/logrus"
    )
    file, err := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
    if err == nil {
        log.Out = file
    } else {
        log.Info("Failed to log to file, using default stderr")
    }
    

    ログローテーション

log.SetOutput(&lumberjack.Logger{
          Filename:  "log/app.log", // ファイル名
          MaxSize:    500,          // ローテーションするファイルサイズ(megabytes)
          MaxBackups: 3,            // 保持する古いログの最大ファイル数
          MaxAge:    365,           // 古いログを保持する日数
          LocalTime: true,          // バックアップファイルの時刻フォーマットをサーバローカル時間指定
          Compress:  true,          // ローテーションされたファイルのgzip圧縮
})
8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8