答案是使用logging模块配置Logger、Handler、Formatter实现自定义日志。首先创建命名Logger并设置级别,接着添加StreamHandler和FileHandler指定输出目标,分别设置级别;然后定义Formatter控制格式,包含时间、名称、级别和消息;最后将Handler绑定到Logger完成配置,即可按需输出日志。

在Python中实现自定义日志,核心是使用内置的logging模块,通过配置Logger、Handler、Formatter和Filter来自定义日志的输出格式、级别和目标位置。下面介绍如何一步步实现一个灵活实用的自定义日志系统。
每个应用通常需要一个独立的Logger实例,避免影响全局配置。
logging.getLogger(name)获取一个命名的Logger,名称通常用__name__
示例:
<font face="Courier New" size="2" color="#006400"> import logging <p>logger = logging.getLogger(<strong>name</strong>) logger.setLevel(logging.DEBUG) </font>
Handler决定日志输出到哪里,比如控制台、文件,甚至网络或邮件。
立即学习“Python免费学习笔记(深入)”;
StreamHandler:输出到控制台FileHandler:输出到文件RotatingFileHandler:按大小轮转日志文件TimedRotatingFileHandler:按时间轮转可以同时添加多个Handler,实现既打印到终端又写入文件。
示例:
<font face="Courier New" size="2" color="#006400">
# 输出到控制台
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
<h1>输出到文件</h1><p>file_handler = logging.FileHandler("app.log")
file_handler.setLevel(logging.DEBUG)
</font>通过Formatter控制日志的显示样式,比如是否包含时间、行号、日志级别等。
%(asctime)s、%(name)s、%(levelname)s、%(message)s、%(lineno)d
%Y-%m-%d %H:%M:%S
示例:
<font face="Courier New" size="2" color="#006400">
formatter = logging.Formatter(
fmt='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
</font>把配置好的Handler添加到Logger,即可生效。
<font face="Courier New" size="2" color="#006400"> logger.addHandler(console_handler) logger.addHandler(file_handler) </font>
之后就可以正常使用了:
<font face="Courier New" size="2" color="#006400">
logger.debug("这是调试信息")
logger.info("程序启动")
logger.warning("注意:资源即将耗尽")
</font>基本上就这些。只要合理组织Logger结构,配合不同Handler和格式,就能满足大多数项目的日志需求。不复杂但容易忽略细节,比如忘记设级别或重复添加Handler导致日志重复输出。
以上就是python自定义日志如何实现的详细内容,更多请关注php中文网其它相关文章!
python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号