logging模块常规使用(配置默认日志记录器)
1 2 3 4 5 6 7 8 9 10 11 12 13
| import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s-%(levelname)s-%(message)s', datefmt='%Y-%m-%d-%H:%M:%S')
logging.debug("debug...") logging.info("info...") logging.info("warning...") logging.info("error...") logging.info("critical...")
|
logging模块常规使用(创建自定义日志记录器)
要使用自定义日志记录器,至少需要两个组件,一个是日志记录器一个是文件处理器
日志记录器就是从logging.getLogger方法里实例化来的,
文件处理器有很多类型,通过不同方法实例化,比如FileHandler写入文件的、rotating切割日志的、SMTP配置邮件的
除了日志记录器和文件处理器,还有一个控制台处理器,一个格式化器
控制台处理器就是高于设定等级的告警,会被直接抛出到控制台中
格式化器是自定义格式,相当于nginx中的log_format参数
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
| import logging
logger=logging.getLogger('my_logger') logger.setLevel(logging.DEBUG)
console_handler=logging.StreamHandler() console_handler.setLevel(logging.WARNING)
file_handler=logging.FileHandler('app.log',encoding='utf-8') file_handler.setLevel(logging.DEBUG)
log_formatter=logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s',datefmt='%Y-%m-%d_%H:%M:%S')
console_handler.setFormatter(log_formatter) file_handler.setFormatter(log_formatter)
logger.addHandler(console_handler) logger.addHandler(file_handler)
logger.debug('debug test') logger.info('info test') logger.warning('warning test') logger.error('error test') logger.critical('critical test')
with open('app.log','r') as f: for line in f.readlines(): print(line,end='')
|
logging模块-日志文件切割(使用旋转日志处理器)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import logging from logging.handlers import RotatingFileHandler
logger=logging.getLogger('rotating_logger') logger.setLevel(logging.DEBUG)
handler=RotatingFileHandler('my.log',maxBytes=2000,backupCount=5,encoding="utf-8")
logger.addHandler(handler)
for i in range(1000): logger.debug(f'test {i} 次')
|

logging模块-告警邮件发送(使用SMTP处理器)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| from logging.handlers import SMTPHandler import logging
logger=logging.getLogger("smtp_mail_logger") logger.setLevel(logging.ERROR)
mail_handler=SMTPHandler(mailhost=('smtp.163.com',25), fromaddr='alertwarning@163.com', toaddrs=['1320991378@qq.com'], subject='错误日志', credentials=('alertwarning@163.com','GAANBCIHILSARBYD'), secure=())
logger.addHandler(mail_handler)
logger.debug("debug test") logger.error("error test")
|
