7

ログ ファイルのすべてのタイムスタンプを UTC タイムスタンプにしたいと考えています。コードで指定する場合、これは次のように行われます。

import logging
import time

myHandler = logging.FileHandler('mylogfile.log', 'a')
formatter = logging.Formatter('%(asctime)s %(levelname)-8s %(name)-15s:%(lineno)4s: %(message)-80s')
formatter.converter = time.gmtime

myHandler.setFormatter(formatter)

myLogger = logging.getLogger('MyApp')
myLogger.addHandler(myHandler)

myLogger.setLevel(logging.DEBUG)
myLogger.info('here we are')

上記の「コード内」構成から離れて、構成ファイルベースのメカニズムに移行したいと思います。

フォーマッタの構成ファイル セクションは次のとおりです。

[handler_MyLogHandler]
args=("mylogfile.log", "a",)
class=FileHandler
level=DEBUG
formatter=simpleFormatter

では、上記のセクションでコンバーター属性 (time.gmtime) を指定するにはどうすればよいでしょうか?

編集: 上記の構成ファイルは次のようにロードされます。

logging.config.fileConfig('myLogConfig.conf')
4

2 に答える 2

4

残念ながら、構成ファイルを使用してこれを行う方法はありません。

class UTCFormatter(logging.Formatter):
    converter = time.gmtime

次にUTCFormatter、構成で a を使用します。

于 2012-09-11T17:51:44.927 に答える
3

ここで、logging.basicConfig に適用された Vinay のソリューション:

import logging
import time

logging.basicConfig(filename='junk.log', level=logging.DEBUG, format='%(asctime)s: %(levelname)s:%(message)s')
logging.Formatter.converter = time.gmtime
logging.info('A message.')
于 2013-12-09T23:23:33.897 に答える