簡體   English   中英

如何更改龍卷風的記錄日期時間格式?

[英]How to change Tornado's logging datetime format?

像這樣的默認龍卷風日志

[I 160418 21:51:16 web:1946] 200 GET /hello (123.123.123.123) 21.72ms

我想將日期格式更改為此

[I 2016-04-18 21:51:16 web:1946] 200 GET /hello (123.123.123.123) 21.72ms

如何執行呢?

您可以按照以下說明更改日期格式: http : //www.tornadoweb.org/en/stable/log.html

datefmt (string) – Datetime format. Used for formatting (asctime) placeholder in prefix_fmt.

使用標准庫的日志記錄模塊進行龍卷風。 這意味着在配置日志記錄模塊時,將配置龍卷風的日志。 當您在應用程序中通過此標准模塊輸出日志時,它們將落入Tornado日志中。

1.設置Tornado的日志記錄日期時間格式的最佳方法是在解析Tornado的配置后配置日志記錄處理程序。

import logging
from tornado.options import parse_command_line

parse_command_line()  # parsing Tornado's default config

formatter = logging.Formatter(
    '[%(levelname)1.1s %(asctime)s.%(msecs)d '
    '%(module)s:%(lineno)d] %(message)s',
    "%Y-%m-%d %H:%M:%S"
)  # creating own format
for handler in logging.getLogger().handlers:  # setting format for all handlers
    handler.setFormatter(formatter)

logging.info("message")  # will display in tornado logs info:
# [I 2018-11-07 17:37:20.463 datefmt_0:14] message

2.另一種方法是在配置之前刪除處理程序:

import logging
from tornado.options import parse_command_line

for hendler in logging.getLogger().handlers:  # remove current handlers
    logging.root.removeHandler(hendler)

logging.basicConfig(format='[%(levelname)1.1s %(asctime)s.%(msecs)d '
                           '%(module)s:%(lineno)d] %(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S')
parse_command_line()  # parsing tornado default config
logging.info("message")  # will display in tornado log info:
# [I 2018-11-01 17:27:09.824 datefmt:11] message

3.也嘗試一下(我從這里得到它: https : //github.com/tornadoweb/tornado/issues/1960 ):

import logging
import logging.config

logging.config.dictConfig({
    'version': 1,
    'formatters': {
        'default': {
            'class': 'tornado.log.LogFormatter',
            'format': '[%(levelname)1.1s %(asctime)s %(module)s:%(lineno)d] %(message)s',
        },
    },
    'handlers': {
        'default': {
            'class': 'logging.StreamHandler',
            'formatter': 'default',
        },
    },
    'root': {   # settings of root logger.
        'level': 'DEBUG',
        'handlers': ['default'],
        'propagate': False,
    },
})

logging.info("message")

4.也嘗試(從此處進行Python日志記錄:dictConfig ):

import logging
import logging.handlers

console_handler = logging.StreamHandler()
console_handler.setFormatter(logging.Formatter(
    '[%(levelname)1.1s %(asctime)s.%(msecs)d '
    '%(module)s:%(lineno)d] %(message)s',
    "%Y-%m-%d %H:%M:%S")
)
logging.root.setLevel(logging.DEBUG)
logging.root.addHandler(console_handler)

logging.info("message")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM