2017-08-01 20 views
0

uber/zap logger apiを設定して、指定したファイルパスにログを追加する方法。パフォーマンスに影響を与えずにローリングファイルアペンダー(ファイルサイズまたは日付に基づく)のように動作させることができますか?ファイルシステムログをローリングするためのuber/zap loggerの設定方法

+0

あなたは何ですか?あなたのアプリはどのように動いていますか?どうやってロギングしていますか? – captncraig

+0

私は通常、stdout/stderrにアプリケーションのログを推奨し、syslogやその他のツールを使って回転ログファイルにリダイレクトします。 – captncraig

答えて

0

ザップロガーにフックを追加して、エントリをlumberjackに書き込むことができます。これは、Goのローリングログです。

簡単な使い方は次のようになります

ローリングログ:

// remember to call this at app (or scope) exit: 
// logger.Close() 
var lumlog = &lumberjack.Logger{ 
    Filename: "/tmp/my-zap.log", 
    MaxSize: 10, // megabytes 
    MaxBackups: 3, // number of log files 
    MaxAge:  3, // days 
} 

zap互換フック:

func lumberjackZapHook(e zapcore.Entry) error { 
    lumlog.Write([]byte(fmt.Sprintf("%+v", e))) 
    return nil 
} 

など、それを使用します。

logger, _ := zap.NewProduction(zap.Hooks(lumberjackZapHook)) 

編集1:これがパフォーマンス面での要件を満たしているかどうかはわかりません。そこには多くの要因があります。たとえば、SSDハードを使用すると大きな違いがありますし、バッチ書き込みでいくつかのtimeseriesデータベースにログインすることさえできます。

編集2: zap documentationでも、これは釣り竿(フックとしてではなく)を使用しています。

関連する問題