Python使用logging模块同时输出日志到文件和控制台
本文介绍如何在Python中利用logging模块将日志同时写入文件和控制台。通过创建FileHandler和StreamHandler,并统一设置Formatter格式,可实现详细的日志追踪。文中提供了完整的代码示例及日志格式化关键字说明,帮助开发者快速掌握日志配置方法。
实现将日志同时输出到文件和控制台的具体代码如下所示:
import logging
# 创建一个logger
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)
# 创建一个handler,用于写入日志文件
fh = logging.FileHandler('test.log')
fh.setLevel(logging.DEBUG)
# 再创建一个handler,用于输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
# 定义handler的输出格式
formatter = logging.Formatter('[%(asctime)s][%(thread)d][%(filename)s][line: %(lineno)d][%(levelname)s] ## %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 给logger添加handler
logger.addHandler(fh)
logger.addHandler(ch)
# 记录一条日志
logger.info('foorbar')
在配置日志格式(formatter)时,采用 %(<dict key>)s 的字典关键字替换模式。系统预置的关键字包括以下各项:
| Format | Description |
|---|---|
| %(name)s | Name of the logger (logging channel). |
| %(levelno)s | Numeric logging level for the message (DEBUG, INFO, WARNING, ERROR, CRITICAL). |
| %(levelname)s | Text logging level for the message ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'). |
| %(pathname)s | Full pathname of the source file where the logging call was issued (if available). |
| %(filename)s | Filename portion of pathname. |
| %(module)s | Module (name portion of filename). |
| %(funcName)s | Name of function containing the logging call. |
| %(lineno)d | Source line number where the logging call was issued (if available). |
| %(created)f | Time when the LogRecord was created (as returned by time.time()). |
| %(relativeCreated)d | Time in milliseconds when the LogRecord was created, relative to the time the logging module was loaded. |
| %(asctime)s | Human-readable time when the LogRecord was created. By default this is of the form “2003-07-08 16:49:45,896” (the numbers after the comma are millisecond portion of the time). |
| %(msecs)d | Millisecond portion of the time when the LogRecord was created. |
| %(thread)d | Thread ID (if available). |
| %(threadName)s | Thread name (if available). |
| %(process)d | Process ID (if available). |
| %(message)s | The logged message, computed as msg % args. |
以上就是Python通过logging模块将日志写入文件和控制台的完整示例分享,希望能为各位读者提供有价值的参考,同时也欢迎大家继续支持本站获取更多技术内容。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









