Python标准模块logging
#!/usr/bin/python#coding:utf-8import loggingimport timedef log(error_msg):#获取时间fm = '%Y-%m-%d %H:%M:%S'YMD = time.strftime(fm,time.localtime())#设置文件的存储路径,及文件save_log_fi
#!/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)
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
更多推荐
所有评论(0)