Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将Tomcat日志指定为log4j日志文件的主目录_Java_Tomcat_Log4j - Fatal编程技术网

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

Java 如何将Tomcat日志指定为log4j日志文件的主目录,java,tomcat,log4j,Java,Tomcat,Log4j,我的WAR使用的是通过WAR中classes/目录下的log4j.properties文件配置的log4j文件附加器 我已将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.File

我的WAR使用的是通过WAR中
classes/
目录下的
log4j.properties
文件配置的log4j文件附加器

我已将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在同一台机器上运行,并且共享服务器libs,但我离题了)

因此,更新如下:

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

对于从Eclipse运行应用程序的人,
${catalina.base}
变量将被
%WORKSPACE%\.metadata\.plugins\org.Eclipse.wst.server.core\tmp1
替换,其中
%WORKSPACE%
是实际的工作区绝对路径。