基于regex过滤器的编校日志

logredactor的Python项目详细描述


日志编校器

根据用户传入的regex过滤器对python日志中的数据进行修订。
这同样适用于json日志格式,也适用于extra参数中的嵌套数据。

示例

importreimportloggingimportlogredactor# Create a loggerlogger=logging.getLogger()# Add the redact filter to the logger with your custom filtersredact_patterns=[re.compile(r'\d+')]# if no `default_mask` is passed in, 4 asterisks will be usedlogger.addFilter(logredactor.RedactingFilter(redact_patterns,default_mask='xx'))logger.warning("This is a test 123...")# Output: This is a test xx...

python只在该记录器上应用过滤器,因此使用日志记录的任何其他文件都不会应用过滤器。要将此筛选器应用于所有记录器,请执行以下操作

importreimportloggingimportlogredactorfrompythonjsonloggerimportjsonlogger# Create a pattern to hide api key in url. This uses a _Positive Lookbehind_redact_patterns=[re.compile(r'(?<=api_key=)[\w-]+')]# Override the logging handler that you want redactedclassRedactStreamHandler(logging.StreamHandler):def__init__(self,*args,**kwargs):logging.StreamHandler.__init__(self,*args,**kwargs)self.addFilter(logredactor.RedactingFilter(redact_patterns))root_logger=logging.getLogger()sys_stream=RedactStreamHandler()# Also set the formatter to use json, this is optional and all nested keys will get redacted toosys_stream.setFormatter(jsonlogger.JsonFormatter('%(name)s%(message)s'))root_logger.addHandler(sys_stream)logger=logging.getLogger(__name__)logger.error("Request Failed",extra={'url':'https://example.com?api_key=my-secret-key'})# Output: {"name": "__main__", "message": "Request Failed", "url": "https://example.com?api_key=****"}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用户界面如何在JavaGUI中为按钮创建各种颜色?   使用MSCAPI的RSA密钥包装的java使用   java Spring数据Redis JedisConnectionException:意外的流结束   java饼图未显示预期输出   java hystrixCommand注释commandKey的用途是什么   windows java可以从cmd运行jar,但不能通过双击来运行   java在单击按钮时遍历XML节点   java试图使用日期(int,int,int)构造函数   带有Buildship 2子项目的java不作为项目依赖项链接   java jsonrpc4j:如何从服务器获取列表<SomeObject>?   用于Java应用程序的内存设置MaxDirectMemory和MaxHeapMemory   java如何从以下类型格式化日期   javayoutube。搜索列表搜索不返回任何内容   java My参数在方法中不起作用,因为泛型存在问题   java如何将Map<Key1Type,Val1Type>转换为Map<Key1Type,Val2Type>   JavaJUnit测试:测试用例的改进,测试数组列表的长度?   java如何在Android中解析带有属性值的xml数据?   使用Hibernate对枚举类型进行Java8bean验证