python - 如何在 datetime 模块中格式化我的输出?
问题描述
所以,我只是在处理 python3 中的 datetime 和 logging 模块,我试图从 datatime 模块中获取时间戳,以便与 logging 事件一起出现。
我希望输出看起来像:7/16/20 22:18:20 DEBUG Test1 调试消息
我的问题:我无法让数据和时间出现在我的日志记录事件的左侧。
from datetime import datetime
logging.basicConfig(level=logging.DEBUG,
datefmt='%m/%d/%Y %H:%M:%S',
filemode='a')
def set_logger(name):
date_str = datetime.now().strftime("%Y_%m_%d")
file_name = name + "_" + date_str
if file_name:
logger = logging.getLogger(name)
logger.addHandler(logging.FileHandler(file_name))
return logger
logger = set_logger("Test1")
logger.debug('Test1 debug message')
logger.info('Test1 info message')
logger.warning('Test1 warning message')
logger.error('Test1 error message')
logger = set_logger("Test2")
logger.debug('Test2 debug message')
logger.info('Test2 info message')
logger.warning('Test2 warning message')
logger.error('Test2 error message')
logger = set_logger("Test3")
logger.debug('Test3 debug message')
logger.info('Test3 info message')
logger.warning('Test3 warning message')
logger.error('Test3 error message')
即使将 date_str 添加到 file_name 它仍然不会在我的控制台中打印。:/
解决方案
始终仔细阅读文档,我知道这可能很乏味(尤其是日期和时间),但它通常会在未来提供巨大的帮助。
logging 模块中的 basicConfig 方法可以采用格式选项。它被初始化为格式化字符串,看起来像
FORMAT = '%(asctime)s: %(levelname)s: %(message)s'
现在格式已初始化,您可以将其传递给 basicConfig 中的格式选项
logging.basicConfig(level=logging.DEBUG,
format=FORMAT,
datefmt='%m/%d/%Y %H:%M:%S',
filemode='a')
那应该给你想要的输出 07/16/2020 21:40:23: DEBUG: Test1 debug message
......等等
您也不需要 set_logger 函数中的 if 语句
所以你的代码应该是这样的:
import logging
from datetime import datetime
FORMAT = '%(asctime)s: %(levelname)s: %(message)s'
logging.basicConfig(level=logging.DEBUG,
format=FORMAT,
datefmt='%m/%d/%Y %H:%M:%S',
filemode='a')
def set_logger(name):
date_str = datetime.now().strftime("%Y_%m_%d")
file_name = name + "_" + date_str
logger = logging.getLogger(name)
logger.addHandler(logging.FileHandler(file_name))
return logger
logger = set_logger("Test1")
logger.debug('Test1 debug message')
logger.info('Test1 info message')
logger.warning('Test1 warning message')
logger.error('Test1 error message')
logger = set_logger("Test2")
logger.debug('Test2 debug message')
logger.info('Test2 info message')
logger.warning('Test2 warning message')
logger.error('Test2 error message')
logger = set_logger("Test3")
logger.debug('Test3 debug message')
logger.info('Test3 info message')
logger.warning('Test3 warning message')
logger.error('Test3 error message')
您可以在此处阅读文档: https ://docs.python.org/3/library/logging.html#logging.Formatter https://docs.python.org/3/library/datetime.html
推荐阅读
- android - 如何获取android q中android文档目录的路径?
- tensorflow - 使用 pip 安装 tensorflow 会导致错误
- excel - Excel 中的日期层次结构
- kibana - 在 Windows Server 中安装 Wazuh Server
- c++ - 为什么我得到 free():程序结束后出现无效指针错误
- azure - Azure Redis - 检索特定对象时偶尔缓慢
- android - Google In App Billing Test Purchases 未显示在控制台中
- php - wp_register_script / wp_enqueue_script 错误
- sql - Oracle 平均查询
- php - 谷歌云空间/图像部署错误,构建未完成