Python编程:logging模块的简单使用

日志级别(5个等级),从低到高分别是:

  • DEBUG
  • INFO
  • WARNING
  • ERROR
  • CRITICAL

日志输出:

  • 控制台日志
  • 文件日志

输出到控制台

默认输出级别为WARNING

import logging

logging.info("info")
logging.debug("debug")
logging.warning("warning")
logging.error("error")
logging.critical("critical")
"""
WARNING:root:warning
ERROR:root:error
CRITICAL:root:critical
"""

输出到文件

import logging

logging.basicConfig(level=logging.DEBUG,
                    filename="log.log",
                    filemode="w",
                    format="%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")

logging.info("info")
logging.debug("debug")
logging.warning("warning")
logging.error("error")
logging.critical("critical")

打开日志文件

2018-06-21 14:32:29,904 - logging_demo.py[line:26] - INFO: info
2018-06-21 14:32:29,905 - logging_demo.py[line:27] - DEBUG: debug
2018-06-21 14:32:29,905 - logging_demo.py[line:28] - WARNING: warning
2018-06-21 14:32:29,905 - logging_demo.py[line:29] - ERROR: error
2018-06-21 14:32:29,905 - logging_demo.py[line:30] - CRITICAL: critical

同时输出到控制台和文件

import logging

# 创建logger对象
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)  # log等级总开关
# log输出格式
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")

# 控制台handler
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.INFO) # log等级的开关
stream_handler.setFormatter(formatter)

# 文件handler
file_handler = logging.FileHandler("logging.log")
file_handler.setLevel(logging.WARNING) # log等级的开关
file_handler.setFormatter(formatter)

# 添加到logger
logger.addHandler(stream_handler)
logger.addHandler(file_handler)

# 输出日志
logger.info("info")
logger.debug("debug")
logger.warning("warning")
logger.error("error")
logger.critical("critical")

日志格式

%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程ID
%(threadName)s: 打印线程名称
%(process)d: 打印进程ID
%(message)s: 打印日志信息

参考

  1. Python中的logging模块
  2. python logging 日志使用
  3. 16.6. logging — Logging facility for Python¶

猜你喜欢

转载自blog.csdn.net/mouday/article/details/80760343