博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【python logging】自定义日志过滤器,通过参数控制日志记录
阅读量:5292 次
发布时间:2019-06-14

本文共 1751 字,大约阅读时间需要 5 分钟。

 

【需求要点】

当前程序已经实现日志记录到 log 文件。新增需求,需要把日志记录到文件的同时,通过 syslog 服务记录到系统日志中。

要求通过新增参数的方式实现日志记录扩展,不能影响原有日志记录。

如果在某一条日志记录处增加参数,则把该日志记录到日志文件和系统日志两个位置中。

 

【实现方案】

方便调试起见,暂不考虑如何通过 syslog 服务记录到系统日志中,而是直接输出到控制台。demo 程序如下:

#!/bin/python# -*- encoding:utf-8 -*-import sysimport loggingclass ContextFilter(logging.Filter):    """    这是一个控制日志记录的过滤器。    """    def filter(self, record):        try:            filter_key = record.TASK        except AttributeError:            return False        if filter_key == "logToConsole":            return True        else:            return Falseif __name__ == '__main__':    # 创建日志对象    logger = logging.getLogger(__name__)    logger.setLevel(logging.DEBUG)    # 创建日志处理器,记录日志到文件    log_path = "./log.log"    file_handler = logging.FileHandler(log_path)    file_handler.setLevel(logging.INFO)    file_fmt = "%(asctime)-15s %(levelname)s [%(filename)s %(lineno)d] %(message)s"    file_formatter = logging.Formatter(file_fmt)    file_handler.setFormatter(file_formatter)    logger.addHandler(file_handler)    # 添加日志处理器,输出日志到控制台    console_handler = logging.StreamHandler(sys.stdout)    console_handler.setLevel(logging.WARN)    console_fmt = '%(asctime)-15s [%(TASK)s] %(message)s'    console_formatter = logging.Formatter(console_fmt)    console_handler.setFormatter(console_formatter)    console_filter = ContextFilter()    console_handler.addFilter(console_filter)    logger.addHandler(console_handler)    filter_dict = {
'TASK': 'logToConsole'} # 记录日志 logger.debug('debug message') logger.info('info message') logger.warning('warn message') logger.error('error message1', extra=filter_dict) logger.error('error message2')

 

【参考资料】

 

通过 syslog 服务记录到系统日志中,参考资料:

 

转载于:https://www.cnblogs.com/munan-zhou/p/8870194.html

你可能感兴趣的文章
解决flex4 分辨率自适应问题
查看>>
表扫描和索引扫描
查看>>
移动硬盘加密!让windows用户无法查看移动硬盘!
查看>>
部署Flask项目到腾讯云服务器CentOS7
查看>>
使用python实现京东抢购脚本
查看>>
登录之后更新导航
查看>>
saddle中每一个属性赋值给到WebPlate中的同名属性
查看>>
图论专题考试2 爆零祭
查看>>
21.centos7基础学习与积累-007-远程连接
查看>>
获取当前日期和随机数
查看>>
透视ERP会计科目 (转自SAP屠夫的博客)
查看>>
0049 MyBatis关联映射--一对一关系
查看>>
解决ultravnc在win2008 R2下CTRL+ALT+DELETEA组合键发送失败的问题
查看>>
Ceph相关
查看>>
大小写转换
查看>>
AJAX
查看>>
maven项目启动报错ContainerBase.addChild: start
查看>>
笔记2
查看>>
HCNP学习笔记之ICMP协议与ping原理以及用Python实现ping
查看>>
字符函数
查看>>