用于向日志记录添加请求上下文的库
django-context-logging的Python项目详细描述
……image:: https://travis-ci.org/lorehov/django_context_logging.svg
:target: https://travis-ci.org/lorehov/django_context_logging
:alt: Build Status
########################
Django Context Logging
########################
``django_context_logging`` is a library for enriching logs records with 上下文
字段。典型的用法是在所有日志中添加一些请求id,以便使故障排除更加方便。此上下文由所有使用
``logging``的应用程序共享,透明。
=
=
用法
=
=
您有两个选项可以将上下文发送到日志系统:将上下文作为
记录中的额外字段插入,或将上下文附加到每个消息。
使用filter
==
此方法允许将字段传递给json格式化程序、日志服务器,或者使用格式字符串中的额外字段。代码块:
日志记录={
“版本”:1,
“格式化程序”:{
“额外”:{
“格式”:'%(levelname)s%(rid)s%(name)s%(message)s',
},
},
‘过滤器’:{
‘上下文过滤器’:{
’:‘django-context-logging.addContextFilter’,
‘默认值’:{'rid':无},
}
},
‘处理程序’:{
‘控制台’:{
‘类’:‘logging.streamhandler’,
‘过滤器’:['context-filter'],
},
},
'root':{
'handlers':['console',
'level':'debug',
},
}
注意三件事:格式字符串中的
*`%(rid)``用于记录来自
上下文的rid(用于请求id);
*``django_context_logging.addContextFilter``-将键从
context dict转换为logrecord的属性的筛选器;
*``` default':{'rid':none}``-我们的一些日志事件可能没有
context,例如在工作机启动时发出的日志。由于在logrecord
实例上缺少“rid”属性(在我们的示例中),因此不会记录所有这些日志。要解决此问题,我们提供“rid”的默认值。
代码块::
日志记录={
“版本”:1,
“格式化程序”:{
“附加”:{
“()”:“django_context_日志记录。addcontextformatter”
“格式”:“%(levelname)s%(name)s%(message)s”
},
},
'处理程序':{
'控制台':{
'类':'日志记录.流处理程序',
'格式化程序':'附加',
},
},
'根':{
'处理程序':['控制台',
'级别':'调试',
},
}
将所有上下文信息附加到每个日志。
下面是一个完整的例子:
…代码块:
等等。
log_context.pop('userid')
环境中的ELD。它还将在每次请求后清除
上下文。代码块:
middleware_classes=[
“django_context_logging.extractrequestcontextmiddleware”,
rest middlewares
]
*如果没有指定django_context_logging_extractor,ExtractrequestContextMiddleware将异常失败。
contributors
----
*lev orekhov`@lorehov<;https://github.com/lorehov>;`\br/>*ei tienne bersac`@bersace<;https://github.com/bersace>;。`_
:target: https://travis-ci.org/lorehov/django_context_logging
:alt: Build Status
########################
Django Context Logging
########################
``django_context_logging`` is a library for enriching logs records with 上下文
字段。典型的用法是在所有日志中添加一些请求id,以便使故障排除更加方便。此上下文由所有使用
``logging``的应用程序共享,透明。
=
=
用法
=
=
您有两个选项可以将上下文发送到日志系统:将上下文作为
记录中的额外字段插入,或将上下文附加到每个消息。
使用filter
==
此方法允许将字段传递给json格式化程序、日志服务器,或者使用格式字符串中的额外字段。代码块:
日志记录={
“版本”:1,
“格式化程序”:{
“额外”:{
“格式”:'%(levelname)s%(rid)s%(name)s%(message)s',
},
},
‘过滤器’:{
‘上下文过滤器’:{
’:‘django-context-logging.addContextFilter’,
‘默认值’:{'rid':无},
}
},
‘处理程序’:{
‘控制台’:{
‘类’:‘logging.streamhandler’,
‘过滤器’:['context-filter'],
},
},
'root':{
'handlers':['console',
'level':'debug',
},
}
注意三件事:格式字符串中的
*`%(rid)``用于记录来自
上下文的rid(用于请求id);
*``django_context_logging.addContextFilter``-将键从
context dict转换为logrecord的属性的筛选器;
*``` default':{'rid':none}``-我们的一些日志事件可能没有
context,例如在工作机启动时发出的日志。由于在logrecord
实例上缺少“rid”属性(在我们的示例中),因此不会记录所有这些日志。要解决此问题,我们提供“rid”的默认值。
代码块::
日志记录={
“版本”:1,
“格式化程序”:{
“附加”:{
“()”:“django_context_日志记录。addcontextformatter”
“格式”:“%(levelname)s%(name)s%(message)s”
},
},
'处理程序':{
'控制台':{
'类':'日志记录.流处理程序',
'格式化程序':'附加',
},
},
'根':{
'处理程序':['控制台',
'级别':'调试',
},
}
将所有上下文信息附加到每个日志。
下面是一个完整的例子:
…代码块:
等等。
log_context.pop('userid')
环境中的ELD。它还将在每次请求后清除
上下文。代码块:
middleware_classes=[
“django_context_logging.extractrequestcontextmiddleware”,
rest middlewares
]
*如果没有指定django_context_logging_extractor,ExtractrequestContextMiddleware将异常失败。
contributors
----
*lev orekhov`@lorehov<;https://github.com/lorehov>;`\br/>*ei tienne bersac`@bersace<;https://github.com/bersace>;。`_