log4j能否根据特定请求而不是包进行设置?或者说能否在请求中临时关闭?

berg369 2015-11-10 09:58:54
log4j下,可设置哪些包在何级别输出,但同样的包下,不同请求,希望有的输出有的不输出,能做到吗?或者说,能否在请求中临时关闭log输出?例如在请求前加一个filter,特定请求下调用业务前,关闭整个log4j的输出,业务执行完闭,再打开log4j输出。
我们系统中有一组定时任务,这些任务执行时,不希望输出日志,否则调试时不方便。
...全文
115 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
_南天北落 2015-11-27
  • 打赏
  • 举报
回复
引用 1 楼 defonds 的回复:
这个属于你的业务类个性化需求了。。 为什么不根据请求决定 log 输出呢? 比如:
if (是特定请求) {
  logger.info(...);
}
1. 逻辑请求尝试一下。 2. 记得以前看到一篇log4j.xml的配置方式,可以配置的更详细,你可以看看。
berg369 2015-11-26
  • 打赏
  • 举报
回复
我没有说清楚问题吗?简单说一下: 执行同样的包和类,有的线程希望输出日志,有的线程不希望输出,log4j能做到吗? 或者这样表述:一个web请求,根据访问的用户,决定是否输出日志,有的用户输出,有的不输出,在请求开始的地方,不输出的用户,在请求开始处关上开关,请求结束前再打开,而不是在每一处输出日志的地方判断用户决定是否输出,log4j能做到吗?
berg369 2015-11-10
  • 打赏
  • 举报
回复
一个web请求过程,会输出例如10-100条日志,级别不同,目的不同,并且日志输出是分散在不同的业务代码中的。正常调用希望能够正常输出,但由定时任务每隔2分钟调用时,会产生大量的web请求,则不希望输出,否则满篇是定时任务执行产生的日志,影响正常调试。按楼上的说法,总不能每一处日志输出处,都判断一下是否是由定时任务触发的吧? 我能想到的解决办法,是在定时任务调用的servlet请求过程中关闭日志,而正常的其它请求,日志照常输出,不知log4j是否支持servlet中的作用域,能够控制在一个请求链中的日志输出
Defonds 2015-11-10
  • 打赏
  • 举报
回复
这个属于你的业务类个性化需求了。。 为什么不根据请求决定 log 输出呢? 比如:
if (是特定请求) {
  logger.info(...);
}

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧