gpt4 book ai didi

Python 日志记录。消息具有相同的日期

转载 作者:行者123 更新时间:2023-11-28 21:04:41 24 4
gpt4 key购买 nike

当我将它们打印到控制台(或日志文件)时,我得到了具有相同日期的日志消息。但是消息之间的超时是两秒。这是我的代码

folder = "logs"
log_name = {}.log
file_name = os.path.join(folder, log_name)

date_format = "%Y-%m-%d_%H:%M:%S"
name_format = "[%(asctime)s] [%(levelname)s] [%(filename)s:%(lineno)s] - %(message)s"

log = logging.getLogger('')
log.setLevel(logging.DEBUG)
format = logging.Formatter(name_format, datetime.now().strftime(date_format))

console_handler = logging.StreamHandler(sys.stderr)
file_handler = handlers.RotatingFileHandler(filename=datetime.now().strftime(file_name.format(date_format)),
maxBytes=(1048576*5),
backupCount=7)
console_handler.setFormatter(format)
file_handler.setFormatter(format)

log.addHandler(console_handler)
log.addHandler(file_handler)


from time import sleep
log.info("1")
sleep(2)
log.info("2")
sleep(2)
log.info("3")

这是输出:

[2017-07-08_17:20:51] [INFO] [logs.py:112] - 1
[2017-07-08_17:20:51] [INFO] [logs.py:114] - 2
[2017-07-08_17:20:51] [INFO] [logs.py:116] - 3

最佳答案

查看 logging.Formatter(fmt=None, datefmt=None, style='%') 的文档.您需要传递的第二个参数是 datefmt(在您的情况下为 "%Y-%m-%d_%H:%M:%S")。记录器将为您执行 fmt.strftime(...)

您正在以这种格式传递表示 datetime.now() 的字符串。因为这是一个 str(例如 '2017-07-08_17:20:51')格式化程序不会提示但总是打印 this date: '2017-07-08_17:20:51'.strftime(...) 将导致 '2017-07-08_17:20:51' - 那里没有要填写的格式说明符。

你应该做的是:

fmt = logging.Formatter(name_format, date_format)
# instead of
# format = logging.Formatter(name_format, datetime.now().strftime(date_format))

(顺便说一句:format 是内置的;将您的格式化程序重命名为 fmt,这样内置的就不会被覆盖)。

关于Python 日志记录。消息具有相同的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44987258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com