python开发之路---第二模块--logging模块
日志同时输出到屏幕和文件
1、logger提供应用程序可以直接使用的接口
2、handler 将日志记录发送到合适的目的地输出
3、filter提供了细度设备来决定输出哪条日志记录
4、formatter决定日志记录的最终输入格式
-------------------------------
Handler参数
1、StreamHandler() -----》输出到屏幕
2、FileHandler(‘mysql.log’)------》输出到文件
Formatter对象
1、logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
Filters 对象
2、日志内容中只要包含 network attack字符的记录
## 代码距离
import logging logging.basicConfig(filename = 'log_test.log', level = logging.INFO, format = '%(asctime)s %(message)s', datefmt = '%m/%d/%y %I:%M:%S %p') logging.warning('user [ypf] attempted wrong password more than 3 times') logging.critical('server is down') logging.debug('this is a Debug logging')
如下是上面代码输出的内容
05/16/19 05:02:55 PM user [ypf] attempted wrong password more than 3 times 05/16/19 05:02:55 PM server is down 05/17/19 09:47:52 AM user [ypf] attempted wrong password more than 3 times 05/17/19 09:47:52 AM server is down
import logging # 1,生产logger 对象 logger = logging.getLogger('web_log') logger.setLevel(logging.INFO) # 不设置的话,默认的日志级别是warning # 2 生成 handler 对象 ch = logging.StreamHandler() fh = logging.FileHandler('web.log') # 2.1 把handler 对象绑定都logger logger.addHandler(ch) logger.addHandler(fh) # 3 生成formatter 对象 # 3.1 把formatter 对象绑定到handler 对象 file_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') console_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s - %(lineno)s') ch.setFormatter(console_formatter) fh.setFormatter(file_formatter) logger.debug('this is a debug logger') logger.info('this is a info logger') logger.error('this is a error logger')