2017-09-01 5 views
0

複数のロギング値をまとめて1つのアイテムとして埋め込むことができるようにフォーマッタにまとめていますか?pythonロガーで複数のフィールドを一緒に埋め込む

マイログフォーマッタは次のようになります。

'%(asctime)s %(module)s:%(funcName)s:%(lineno)-15d %(levelname)-8s %(name)s: %(message)s' 

私は一緒にパッドにモジュール、FUNCNAME、およびLINENOフィールドを、それをしたいと思います。このフォーマッタを実行すると、この出力生成:

2017-09-01 21:06:29,299 app:main:48    INFO  pub: main start 
2017-09-01 21:06:29,434 app:push_data:36    INFO  pub: push data 

をしかし、私はそれのようになりたい:私は最近、同様の問題を持っていたし、カスタムlogging.Formatterを作ることによってそれを解決し

2017-09-01 21:06:29,299 app:main:48   INFO  pub: main start 
2017-09-01 21:06:29,434 app:push_data:36  INFO  pub: push data 

答えて

0

。あなたのiniファイルで

、フォーマッタブロックの下に次の行を追加します。

class=my_log_formatter.MyLogFormatter 

また、あなたはそれが存在する場合format=で始まる行を削除する必要があります。新しいクラスを作る次に

format=%(asctime)s %(name)-40s:%(lineno)-4s %(levelname)-8s %(message)s 

:それはこのようになります

import logging 
class MyLogFormatter(logging.Formatter): 
    def format(self, record): 
     location = '%s.%s:%s' % (record.name, record.funcName, record.lineno) 
     msg = '%s %-60s %-8s %s' % (self.formatTime(record), location, record.levelname, record.msg) 
     record.msg = msg 
     return super(MyLogFormatter, self).format(record) 
関連する問題