Pyhton标准模块logging

GetLogger
GetLogger() returns a reference to a logger instance with the specified name if it is provided, or root if not. The names are period-separated hierarchical structures. Multiple calls to getLogger() with the same name will return a reference to the same logger object.

后面会看到这种以’.’分隔的hierarchical structures有什么用.
Formatter
Formatter对象定义了最终log信息的顺序,结构和内容.
Handler
这儿用到了StreamHandler和FileHandler, 用于向不同的输出端打log.
SetLevel
Logging有如下级别: DEBUG,INFO,WARNING,ERROR,CRITICAL
默认级别是WARNING, logging模块只会输出指定level以上的log
这样的好处, 就是在项目开发时debug用的log, 在产品release阶段不用一一注释, 只需要调整logger的级别就可以了, 很方便的.

Formatter
Formatter对象定义了最终log信息的顺序,结构和内容.于基本的logging.Handler类不同,应用可以直接实例化formatter类,当然,如果需要你也可以子例化formatter以便定制它的一些行为.构造函数接受两个可选参数:一个信息格式字符串和一个日期格式字符串.如果没有信息格式字符串,直接输出log信息.如果没有日期格式字符串,默认的格式是:%Y-%m-%d %H:%M:%S

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/python  
#coding:utf-8

import logging
import time

def log(error_msg):
#获取时间
fm = '%Y-%m-%d %H:%M:%S'
YMD = time.strftime(fm,time.localtime())
#设置文件的存储路径,及文件
save_log_file = 'error.log'

# 第一步创建一个logger的句柄
logger = logging.getLogger('error')
#创建一个处理写入日志文件的handler,参数保存的"日志文件
handler = logging.FileHandler(save_log_file)

#设置日志输出的格式
formatter = logging.Formatter("%(asctime)s-%(levelname)s-%(message)s")
handler.setFormatter(formatter)

#将处理文件的的handler假如到logger中去
logger.addHandler(handler)
# Logging有如下级别: DEBUG,INFO,WARNING,ERROR,CRITICAL
# 默认级别是WARNING, logging模块只会输出指定level以上的log
# 这样的好处, 就是在项目开发时debug用的log, 在产品release阶段不用一一注释,
# 只需要调整logger的级别就可以了, 很方便的.
logger.setLevel(logging.INFO)
#写入日志
logger.info(error_msg)
#其他的写入方法
logger.debug(error_msg)
logger.warn(error_msg)
logger.error(error_msg)
logger.critical(error_msg)
logger.removeHandler(handler)
if __name__ == '__main__':
log_info = '传入日志信息'
log(log_info)

Comments

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×