私はでログファイルを作成したいフラスコ、Pythonの3.xおよびcelery4 (合計8人の労働者)のPython-セロリログイン
を使用する「RotatingFileHandler」ファイルサイズを超えている場合は分割します。
最初のログファイルで正常に動作します。 (それは、すべての労働者にはログインが含まPoolWorker-1〜PoolWorker-8)
-rw-rw-r-- 1 sj sj 1048530 9월 18 10:01 celery_20170918.log (All worker's log)
しかし、ファイルサイズが終わったとき、区切りファイル上の労働者の書き込みログ。
-rw-rw-r-- 1 sj sj 223125 9월 18 10:47 celery_20170918.log (All worker's log except below 2, 5, 6))
-rw-rw-r-- 1 sj sj 43785 9월 18 10:47 celery_20170918.log.1 (only PoolWorker-2 log)
-rw-rw-r-- 1 sj sj 46095 9월 18 10:47 celery_20170918.log.2 (only PoolWorker-5 log)
-rw-rw-r-- 1 sj sj 45990 9월 18 10:47 celery_20170918.log.3 (only PoolWorker-6 log)
-rw-rw-r-- 1 sj sj 1048530 9월 18 10:01 celery_20170918.log.4 (Log file made at first is changed to this.)
ルールは何か分かりませんし、重複したログがあります。
私のセロリのロガーは以下の通りです。
tasks.py
logger = get_task_logger('tasks')
logger.setLevel("INFO")
filename = './log/celery/celery_task.log'
formatter = Formatter('%(levelname)s-%(asctime)s %(processName)s %(funcName)s():%(lineno)d %(message)s')
# FileSize rotating
fileMaxByte = 1024 * 1024 * 1 # 30MB
fileHandler = logging.handlers.RotatingFileHandler(filename, maxBytes=fileMaxByte, backupCount=100)
fileHandler.setFormatter(formatter)
logger.addHandler(fileHandler)
@celery.task(...options...)
def test_call(self):
logger.info("LOG TEST")
test.pyは、何が問題になっています
if __name__ == '__main__':
test_call.apply_async()
?
ありがとうございました!素敵な答え:)私は自分の回転ロガーを作ろうとします。ありがとう! – hai
'外部ロギングメカニズム'の例は、この回答に大きな助けになります。 – KBoehme
@KBoehmeそれは非常にコンテキストに依存しますが、(r)syslogd/systemdを使うことができます。 – georgexsh