java - 如何将 Tomcat 日志指定为 log4j 日志文件的主目录

标签 java tomcat log4j

我的 WAR 正在使用通过 WAR 内 classes/ 目录下的 log4j.properties 文件配置的 log4j FileAppender。

我已经这样配置了我的 log4j appender:

# Set the root logger to DEBUG.
log4j.rootLogger=DEBUG

# MonitorLog - used to log messages in the Monitor.log file.
log4j.appender.MonitorAppender=org.apache.log4j.FileAppender
log4j.appender.MonitorAppender.File=MonitorLog.log
log4j.appender.MonitorAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.MonitorAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n

# Use the MonitorAppender to log all messages.
log4j.logger.*=DEBUG,MonitorAppender

通过这种配置,我试图实现以下目标:

  • 所有调试级别和更高级别的日志消息都会被记录下来(所以一切)
  • 我希望 MonitorLog.log 文件位于 Tomcat 的 logs/ 目录下

这个配置是否实现了这些项目,如果没有,需要改变什么?

最佳答案

如果你知道这个 WAR 只会部署到一个 tomcat,你可以利用系统属性 catalina.base,它代表你的 tomcat 基础文件夹的根目录(还有一个 cataline.home,但它们通常是相同的,除非您在同一台机器上运行多个 tomcat 并且共享服务器库,但我离题了)。

所以更新如下:

log4j.appender.MonitorAppender.File=${catalina.base}/logs/MonitorLog.log

关于java - 如何将 Tomcat 日志指定为 log4j 日志文件的主目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10919214/

相关文章:

java - Java 中的 I/O 操作优化?

java - 如何跟踪 Java/Tomcat 中的登录尝试并在 x 尝试后显示用户被锁定的消息?

java - 推送通知给客户端

log4j - 从Gradle中的slf4j迁移到log4j 2

Log4J2 CloudWatch Appender

java - 构建 Android 源代码时如何修复 JDK 未找到错误?

java - 如何在 Jersey 中制作一个接受多个复杂参数的 POST 方法?

java - Apache Log4j2 : one log file per day, 删除旧文件

java - 将有效或无效的 JSON 转换为字符串的好方法是什么?

ruby-on-rails - 将jRuby部署到Tomcat的子文件夹中