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')

 

posted @ 2019-05-17 11:07  MarkaiElsa  阅读(125)  评论(0编辑  收藏  举报