3

私はdjango 1.3のロギング機能を使用しており、timedrotatingfilehandlerを実装してログを1時間ごとにローテーションしようとしています.ロガーは1時間ごとに正常にローテーションしていますが、ログリクエストごとにファイルを切り捨てているようです.ファイルには最後に書き込まれたメッセージしかありません.これはdjangoハンドラーの問題ですか、それともどこかに欠けています.ログ辞書は以下のとおりです:

LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
    'standard': {
        'format' : "%(asctime)s:%(pathname)s:%(lineno)s: %(message)s",
        'datefmt' : "%d/%b/%Y %H:%M:%S"
    },
},
'handlers': {
    'logfile': {
        'level':'DEBUG',
        'class':'logging.handlers.TimedRotatingFileHandler',
        'filename': "/tmp/log1.log",
    'when' : 'hour',
    'interval' : 0,
        'formatter': 'standard',
    },
},
'loggers': {
    'collection': {
        'handlers': ['logfile'],
        'level': 'DEBUG',
    },
}
}

注意: 間隔が 1 に設定されている場合、ログはローテーションされません。これは django のバグですか?

4

3 に答える 3

1

以下を設定する必要があります。

'when' : 'H',
'interval' : 1,

コードから、現在の「いつ」イベントがサポートされています:

  • S - 秒
  • M - 分
  • H - 時間
  • D - 日
  • 真夜中 - 真夜中に繰り越す
  • W{0-6} - 特定の日にロールオーバーします。0 - 月曜日

Interval は、カウントする間隔の数です (たとえば、== 'H' で interval == 2 の場合は 2 時間になります)。

于 2012-05-02T10:15:16.280 に答える
0

ログファイルを作成するときはいつでも、ファイル名に日時スタンプを追加するだけです。これにより、ファイルが切り捨てられることはありません。

于 2013-02-13T06:38:09.227 に答える
0

複数のプロセスがログ ファイルに書き込みを行っていると思われます。その場合、ConcurrentLogHandlerを使用して切り捨てを回避できます。

于 2016-11-08T08:06:07.580 に答える