Many programs have the need to record logs, and the information contained in the logs includes normal program access logs, and may also include errors, warnings and other information output. Python's logging module provides a standard log interface through which you can store Various formats of logs. The recorded logs can be divided into 5 levels: debug, info, warning, error, and critical. Let’s take a look at how to use it.
First introduction to the module:
#logging初识 import logging logging.warning("user [James] attempted wrong password more than 3 times") logging.critical("server is down") # WARNING:root:user [James] attempted wrong password more than 3 times # CRITICAL:root:server is down
The above code is the simplest way, brackets The content inside is the printed information, and the method after logging. is the log level. Let’s take a look at the detailed information of the five levels of logging. If you want to write the log to a file, it is also very simple:
#日志打印到文件中 import logging logging.basicConfig(filename="example.log",level=logging.INFO, format="%(asctime)s %(message)s", datefmt="%m/%d/%Y %H:%M:%S [%A]") # H 24小时格式 I 12小时格式 A 周几完整 a 周几简写 p AM/PM logging.debug("This message should go to the log file") logging.info("So should this") logging.warning("And this ,too")
logging .basicConfig defines the input file path, input log information level, input format, and the format can be customized; after executing the code, the example.log file will generate the following information:
10/31/2016 17:16:17 [Monday] So should this 10/31/2016 17:16:17 [Monday] And this ,too
#!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian import logging #创建logger logger = logging.getLogger("test_log") #创建logger对象 括号内容随便写 logger.setLevel(logging.INFO) #全局日志级别 ch = logging.StreamHandler() #日志打印到屏幕上 ch.setLevel(logging.DEBUG) #指定ch日志打印级别 fh = logging.FileHandler("access.log") #日志存进文件 fh.setLevel(logging.WARNING) #指定fh日志输入级别 formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") #定义日志格式,可写多个 #添加日志格式到ch,fh ch.setFormatter(formatter) fh.setFormatter(formatter) #添加ch,fh到logger中 logger.addHandler(ch) logger.addHandler(fh) logger.debug('debug message') logger.info('info message') logger.warn('warn message') logger.error('error message') logger.critical('critical message')
2016-10-31 17:23:42,988 - test_log - INFO - info message 2016-10-31 17:23:42,988 - test_log - WARNING - warn message 2016-10-31 17:23:42,988 - test_log - ERROR - error message 2016-10-31 17:23:42,988 - test_log - CRITICAL - critical message
2016-10-31 17:02:06,223 - test_log - WARNING - warn message 2016-10-31 17:02:06,224 - test_log - ERROR - error message 2016-10-31 17:02:06,224 - test_log - CRITICAL - critical message
Several important formats: %(lineno)d Output print log code line, %(process) d outputs the process ID of the printing log, %(thread)d outputs the thread ID of the printing log