这个问题让我发疯,因为我不知道为什么这才开始发生,而且我已经浪费了一周的时间,完全没有进展。
我正在维护一个在 JBoss 4.3 上运行的遗留应用程序,使用:
- Struts2
- 休眠 3.2.5
- 日志4J 1.2.15
- ojdbc5(针对 Oracle 10g 的 Oracle JDBC 驱动程序)
- Apache Commons Logging 1.1(脆弱的第三方自定义组件所需的恶意依赖)
- c3p0 0.9.1.2
日志文件一直被(我猜是Apache?)垃圾污染,例如:
07:37:04,024 调试 [摘要] 新匹配 ='web-app/mime-mapping/extension'
07:37:04,024 调试 [Digester] 为 CallParamRule [paramIndex=0,attributeName=null,从 stack=false] 触发 begin()
07:37:04,024 调试 [sax] 字符(tcl)
07:37:04,028 调试 [sax] endElement(,,extension)
07:37:04,028 调试 [摘要] 匹配 ='web-app/mime-mapping/extension'
07:37:04,028 调试 [摘要] bodyText='tcl'
07:37:04,028 调试 [摘要] 为 CallParamRule [paramIndex = 0,attributeName = null,从堆栈 = false] 触发 body()
07:37:04,028 调试 [消化器] 弹出正文
直到最近,当下一行后面跟着数十万行空白时,我才真正关心过。
07:37:04,024 调试 [摘要] 推送正文'
...
'
现在我非常关心,因为出于审计原因,我们必须无限期地维护这些日志文件,并且它们在服务器重新启动后以 20MB 左右开始。
我最初认为通过从 log4j.properties 禁用 Sax Digester 日志记录,我解决了问题,但我尝试过的没有任何工作。
http://programming.itags.org/development-tools/59562/
https://community.jboss.org/thread/4401
http://www.coderanch.com/t/47763/Struts/disable-struts-debug-info-messages
http://deepaksrivastav.com/?p=63
http://www.mail-archive.com/log4j-user@logging.apache.org/msg10703.html
这里有人提到,他们可能是类路径上漂浮的流氓 log4j.properties 或 simplelog.properties 的可能性,这导致了我的悲痛,但经过彻底的猎巫之后,我发现没有什么能真正抑制日志文件污染。
任何帮助或建议将不胜感激。
编辑:下面的一个很好的建议提醒我,我已经尝试在此服务器实例的 JBoss log4j xml 配置文件中的所有内容上将日志记录设置为 WARN。从字面上看,什么都没有改变。我注意到临时文件和工作目录也没有被正确清理,所以我擦掉了它们,但仍然没有。希望这些信息有所帮助,不要吓跑人们想,“伙计,那家伙搞砸了!” :)