Golangサードパーティログパッケージseelog構成ファイル詳細な説明



Golang Third Party Log Package Seelog Configuration File Detailed Explanation



プロジェクトの開発はログから切り離せません。独自のプロジェクトログ出力を一致させることは、多くの場合、開発プロジェクトの前提です。 golangでは、seelog非常に強力な機能を備えた、比較的有名なログ処理パッケージである必要があります。seelog 公式文書

1.seelogの主な機能

見てみましょうseelog何が強力か



  • さまざまなレベルのログを設定する
  • 端末またはファイルへの出力
  • 指定されたレベルのログをフィルタリングする
  • 多くの異なるログ出力形式を定義する
  • トリガーログのファイル名または関数名に従って、出力ログを区別します
  • SMTPまたはTCPを介したログの転送(ネットワーク転送ログ)
  • ログファイルのローリング(期限切れのログの自動クリア)。

次に、seelogをインストールします

$ go get github.com/cihub/seelog

3、seelogを使用します

公式デモを見てみましょう

package main import ( log 'github.com/cihub/seelog' ) func main() { defer log.Flush() log.Info('Hello from Seelog!') }

パッケージをインポートするだけで直接使用できます。構成ファイルを使用してログを高度にカスタマイズする方法を見てみましょう。



import ( log 'github.com/cihub/seelog' ) func SetupLogger() { logger, err := log.LoggerFromConfigAsFile('seelog.xml') if err != nil { return } log.ReplaceLogger(logger) }

seelog構成ファイルは通常xmlです、見てみましょうseelog.xml構成ファイルの一般的なフレームワーク

... /> ... /> ... ... /> ... /> ... ... ... /> ... ... /> ... /> ...

フレームワークを理解した後、公式インスタンス構成ファイルを例として取り上げましょう。 https://github.com/cihub/seelog/wiki/Example-config

<seelog type='asynctimer' asyncinterval='5000000' minlevel='debug' maxlevel='error'> <exceptions> <exception funcpattern='*main.test*Something*' minlevel='info'/> <exception filepattern='*main.go' minlevel='error'/> exceptions> <outputs formatid='main'> <console/> <splitter formatid='format1'> <file path='log.log'/> <file path='log2.log'/> splitter> <splitter formatid='format2'> <file path='log3.log'/> <file path='log4.log'/> splitter> <rollingfile formatid='someformat' type='size' filename='./log/roll.log' maxsize='100' maxrolls='5' /> <buffered formatid='testlevels' size='10000' flushperiod='1000'> <file path='./log/bufFileFlush.log'/> buffered> <filter levels='error'> <file path='./log/error.log'/> <smtp senderaddress='root@xxxxx' sendername='Automatic notification service' hostname='mail.none.org' hostport='587' username='nns' password='123'> <recipient address='root@xxxxx'/> <recipient address='root@xxxxx'/> smtp> <conn net='tcp4' addr='server.address:5514' tls='true' insecureskipverify='true' /> filter> outputs> <formats> <format id='main' format='%Date(2006 Jan 02/3:04:05.000000000 PM MST) [%Level] %Msg%n'/> <format id='someformat' format='%Ns [%Level] %Msg%n'/> <format id='testlevels' format='%Level %Lev %LEVEL %LEV %l %Msg%n'/> <format id='usetags' format='<msg>%Msg</time>'/> <format id='format1' format='%Date/%Time [%LEV] %Msg%n'/> <format id='format2' format='%File %FullPath %RelFile %Msg%n'/> formats> seelog>

設定ファイルの内容が最初の連絡先には少なすぎることは避けられず、理解するのは困難です。実際、その構成ファイルの一般的なフレームワークを理解し、次に構成ファイルを自分で変更して何が出力されるかを確認しようとする限り、すぐに理解されます。



<seelog type='asynctimer' asyncinterval='1000000' minlevel='debug' maxlevel='error'> <outputs formatid='main'> <console/> outputs> <formats> <format id='main' format='%UTCDate %UTCTime - [%LEV] - %RelFile - l%Line - %Msg%n'/> formats> seelog> <seelog type='asynctimer' asyncinterval='1000000' minlevel='debug' maxlevel='error'> <outputs formatid='main'> <console/> <splitter formatid='format1'> <file path='log.log'/> splitter> outputs> <formats> <format id='main' format='%UTCDate %UTCTime - [%LEV] - %RelFile - l%Line - %Msg%n'/> <format id='format1' format='%Date(2006 Jan 02/3:04:05.000000000 PM MST) [%Level] %Msg%n'/> formats> seelog>