【发布时间】:2015-12-05 19:58:37
【问题描述】:
目前我们在 Tomcat 中有多个 (10+) webapps,每个都必须有自己的 log4j.xml 配置,因为
- 每个 webapp 都有不同的 DailyRollingFileAppender 文件名
- 通常有 2-3 个附加程序(信息/错误日志、审计、统计信息)
- 可能具有独特的记录器级别定义,以减少某些闲聊组件。
越来越大的挑战是使用日志记录的各方需要不同的格式、规则和日志级别:
- 开发人员希望对所有内容都进行 TRACE 日志记录,测试人员希望进行 INFO 日志记录,系统管理员(用于生产部署等)只希望 ERROR 级别
- 开发人员和测试人员都对 DailyRollingFileAppender 感到满意,而系统管理员则希望改用 logrotate
- 系统管理员想要压缩日志,这对开发人员和测试人员来说很不方便。
所以最明显的解决方案当然是为每个 webapp 使用 3 个变体(log4j.xml.dev、log4j.xml.test、log4j.xml.prod)的 log4j.xml,并以某种方式重新部署相应的一个。维护甚至设置这看起来像是一场噩梦。
另一种选择是在 webapps 之外的某个位置,所有 webapps 都会有 1 个 log4j.xml,为该环境设置一次,而不是每次都重新部署。似乎更好,但是那个大的 log4j.xml 可能会变得混乱,我没有找到任何关于这是否是一个好方法或者在这种情况下应该放置 log4j.xml 的任何建议。
如果有人遇到类似的困境,你是如何解决的?如果您使用了上述方法之一,或者您对完全不同的方法有想法 - 我想听听。谢谢。
【问题讨论】:
标签: java xml tomcat logging log4j