Django中间件和日志过滤器,为作为请求一部分生成的每个日志消息附加一个唯一的ID

django-log-labeler的Python项目详细描述


django原木贴标机

Django中间件和日志筛选器,用于将头中的值附加到作为请求的一部分生成的每个日志消息。

作者:Hermann Stephane Ntsamo

示例

{"message": "Hello World", "correlation_id": "6da1d73a-9a72-4206-93a4-bac892b76784", "session_id": "none", "app_id": "none", "nim_user": "none", "app_version": "none"}

安装和使用

首先,安装包:pip install django-log-labeler

将中间件添加到您的MIDDLEWARE_CLASSES设置中。在

^{pr2}$

下面是LOGGING设置的示例:

DEFAULT_LOG_LEVEL=os.getenv('LOGGING_LEVEL','INFO')LOG_LABEL_REQUEST_SETTING={"correlation_id":"HTTP_NIM_CORRELATION_ID","session_id":"HTTP_NIM_SESSION_ID","app_id":"HTTP_NIM_APP_ID","nim_user":"HTTP_NIM_USER","app_version":"HTTP_NIM_APP_VERSION",}LOG_LABEL_EXCLUDE_LOG_LIST=["","django"]#Case InsensitiveLOG_LABEL_OBFUSCATE={"headers":["Authorization"],"body":[("PasswordText",Obfuscation_Type.XML),("sessionID",Obfuscation_Type.XML),("password",Obfuscation_Type.JSON),("token",Obfuscation_Type.JSON)],"response":[("sessionID",Obfuscation_Type.XML),("password",Obfuscation_Type.JSON),("token",Obfuscation_Type.JSON),("sessionid",Obfuscation_Type.JSON,)],"url":[("token",Obfuscation_Type.URL),]}LOGGING={'version':1,'disable_existing_loggers':False,'filters':{'request_id':{'()':'log_labeler.filters.HeaderToLabelFilter'}},'formatters':{'json':{'()':'pythonjsonlogger.jsonlogger.JsonFormatter','format':'%(message)s'}},'handlers':{'console':{'level':'DEBUG','class':'logging.StreamHandler','filters':['request_id'],'formatter':'json',},},'loggers':{'log_labeler.middleware':{'handlers':['console'],'level':'DEBUG','propagate':False,},'gunicorn.access':{'handlers':['console'],'level':'INFO','propagate':False,},}}NIM_DJANGO_REQUEST_LOG_LEVEL_NAME="HTTP_NIM_DJANGO_REQUEST_LOG_LEVEL"MAX_REQUEST_RESPONSE_SIZE=os.getenv('MAX_REQUEST_RESPONSE_SIZE','OFF')

然后可以像往常一样输出日志消息:

importlogginglogger=logging.getLogger(__name__)logger.debug("Hello world!")

设置说明:

默认日志级别 如果未指定其他日志级别,则应用于记录器的默认日志级别

日志标签请求设置 将HTTP头映射到日志项的键/值对列表

日志标签不包括日志列表 动态更改日志级别时要忽略的记录器列表

日志标签混淆 有模糊规则的词典

#ŠŠŠŠ 用于更改日志记录级别的标头的名称。例如:调试、信息、错误。。。在

最大请求响应大小 请求和响应成功时允许的最大大小。错误消息未被截断。在

许可证

版权所有©2012-2018,DabApps。在

版权所有。在

以源代码和二进制形式重新分发和使用,有无 如果满足以下条件,则允许修改:

重新分发源代码必须保留上述版权声明,此 条件列表和以下免责声明。 二进制形式的再分配必须复制上述版权声明,此 文件中的条件列表和以下免责声明和/或 分发时提供的其他材料。 本软件由版权所有人和贡献者“按原样”提供,并且 任何明示或暗示的保证,包括但不限于 适销性和适用于特定用途的保证 否认。在任何情况下,版权持有人或贡献者不承担任何责任 对于任何直接的、间接的、偶然的、特殊的、示范性的或后果性的 损害赔偿(包括但不限于采购替代货物或 服务;使用、数据或利润损失;或业务中断) 根据任何责任理论,无论是在合同中,严格责任, 或因使用而产生的侵权行为(包括疏忽或其他) 即使被告知有这种损坏的可能性。在

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

推荐PyPI第三方库


热门话题
java重写父类中的特定行   java Apache Commons CLI订购帮助选项?   java如何将数据添加到网格视图   java如何在Apache Camel批处理后移动文件?   java如何为日期范围的between子句编写hql查询?   雅加达ee开始Java编程,我应该从哪里开始?   排序Java8+流:检查我的objectinstances的两个字段的列表顺序是否正确   java如何将json转换为Map<String,Object>确保整数为整数   java不能在Spring数据JPA批处理过程中创建TransactionException   java损坏的PDF文件从FTP下载到使用Apache Common Net的设备   java无法使用Spring批处理和Wso2为XML架构命名空间找到Spring NamespaceHandler   java Android ImageView未显示在SherlockFragment中   Maven在构建时出错=无法识别Java路径   java如何使用批处理文件调用关闭处理程序?   java admob广告横幅重叠我的游戏屏幕安卓