Mar*_*vec 4 logging log4j request
我是Logging和Log4j的新手.我想要做的是更改每个请求的记录器级别.这意味着:
通常,优先级设置为ERROR,但用户可以使用特殊参数调用服务器,以将优先级日志级别设置为DEBUG,但仅限于该用户/请求.
这意味着如果用户A发送请求http://myServer.com/test,则仅记录优先级为ERROR的消息.
但是,如果用户A发送请求http://myServer.com/test?debug=true,则记录器会记录所有消息,但是如果用户B同时发送请求http://myServer.com/test,则仅记录ERROR消息.
如果这些日志可以保存在新的appender中,那就太好了.
我认为你应该使用Log4j过滤器.
在log4j2.xml配置中有这个:
<DynamicThresholdFilter key="X-Log-Level" onMatch="ACCEPT" onMismatch="NEUTRAL" defaultThreshold="ERROR">
<KeyValuePair key="TRACE" value="TRACE"/>
<KeyValuePair key="DEBUG" value="DEBUG"/>
</DynamicThresholdFilter>
Run Code Online (Sandbox Code Playgroud)
(...)并在您的请求中设置一个过滤器,通过例如MDC将"X-Log-Level"分配给线程上下文.
// Replace the hardcoded logLevel value with something dynamic,
// ideally from the http request header.
String logLevel = "DEBUG";
MDC.put("X-Log-Level", logLevel);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
594 次 |
| 最近记录: |