使用logging模块处理Python中的日志输出。


日志等级

常见的日志等级有如下几种:

  1. DEBUG:最详细的日志信息,典型应用场景是 问题诊断
  2. INFO:信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
  3. WARNING:当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
  4. ERROR:由于一个更严重的问题导致某些功能不能正常运行时记录的信息
  5. CRITICAL:当发生严重错误,导致应用程序不能继续运行时记录的信息

基本使用方法

1
2
3
4
5
6
7
8
import logging


logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")

输出如下:

basic_log

注意⚠️:由于logging模块默认输出等级为WARNING,所以这里看不到DEBUG和INFO的log输出。

配置日志输出等级

在Python中,使用logging.basicConfig(**kwargs)方法自定义log的输出格式

设置输出等级如下:

1
2
3
4
5
6
7
8
9
import logging


logging.basicConfig(level=logging.DEBUG)
logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")

输出如下:

level_control

配置日志输出格式

示例如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import logging


LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT)

logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")

输出如下:

format_control

将日志输出到文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import logging


LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
DATE_FORMAT = "%Y-%m-%d %H:%M:%S %p"

logging.basicConfig(filename='demo.log', level=logging.DEBUG, format=LOG_FORMAT, datefmt=DATE_FORMAT)

logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")

输出如下:

file_output

参考

Python之日志处理(logging模块):https://www.cnblogs.com/yyds/p/6901864.html