logging模块是在2.3新引进的功能,下面是一些常用的类和模块级函数
模块级函数
logging.getLogger([name]):返回一个logger对象,如果没有指定名字将返回root logger
logging.debug()、logging.info()、logging.warning()、logging.error()、logging.critical():设定root logger的日志级别
logging.basicConfig():用默认Formatter为日志系统建立一个StreamHandler,设置基础配置并加到root logger中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import
logging
import
sys
LEVELS
=
{
'debug'
:
logging.DEBUG,
'info'
:
logging.INFO,
'warning'
:
logging.WARNING,
'error'
:
logging.ERROR,
'critical'
:
logging.CRITICAL}
if
len
(sys.argv)
>
1
:
level_name
=
sys.argv[
1
]
level
=
LEVELS.get(level_name,
logging.NOTSET)
logging.basicConfig(level
=
level)
logging.debug(
'This
is a debug message'
)
logging.info(
'This
is an info message'
)
logging.warning(
'This
is a warning message'
)
logging.error(
'This
is an error message'
)
logging.critical(
'This
is a critical error message'
)
$ python logging_level_example.py debug
DEBUG:root:This is a debug message
INFO:root:This is an info message
WARNING:root:This is a warning message
ERROR:root:This is an error message
CRITICAL:root:This is a critical error message
$ python logging_level_example.py info
INFO:root:This is an info message
WARNING:root:This is a warning message
ERROR:root:This is an error message
CRITICAL:root:This is a critical error message
Loggers
Logger.setLevel(lel):指定最低的日志级别,低于lel的级别将被忽略。debug是最低的内置级别,critical为最高
Logger.addFilter(filt)、Logger.removeFilter(filt):添加或删除指定的filter
Logger.addHandler(hdlr)、Logger.removeHandler(hdlr):增加或删除指定的handler
Logger.debug()、Logger.info()、Logger.warning()、Logger.error()、Logger.critical():可以设置的日志级别
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import
logging
logger
=
logging.getLogger(
"simple_example"
)
logger.setLevel(logging.DEBUG)
ch
=
logging.StreamHandler()
ch.setLevel(logging.DEBUG)
formatter
=
logging.Formatter(
"%(asctime)s
- %(name)s - %(levelname)s - %(message)s"
)
ch.setFormatter(formatter)
logger.addHandler(ch)
logger.debug(
"debug
message"
)
logger.info(
"info
message"
)
logger.warn(
"warn
message"
)
logger.error(
"error
message"
)
logger.critical(
"critical
message"
)
$ python simple_logging_module.py
2005-03-19 15:10:26,618 - simple_example - DEBUG - debug message
2005-03-19 15:10:26,620 - simple_example - INFO - info message
2005-03-19 15:10:26,695 - simple_example - WARNING - warn message
2005-03-19 15:10:26,697 - simple_example - ERROR - error message
2005-03-19 15:10:26,773 - simple_example - CRITICAL - critical message
Handlers
handler对象负责发送相关的信息到指定目的地。可以通过addHandler()方法添加多个多handler
Handler.setLevel(lel):指定被处理的信息级别,低于lel级别的信息将被忽略
Handler.setFormatter():给这个handler选择一个格式
Handler.addFilter(filt)、Handler.removeFilter(filt):新增或删除一个filter对象
Formatters
Formatter对象设置日志信息最后的规则、结构和内容,默认的时间格式为%Y-%m-%d %H:%M:%S,下面是Formatter