Java 如何在Tomcat中分离web应用程序日志
我的webapp some-app.war在Tomcat 8.5下运行。我使用Slf4j和Logback在webapp中进行日志记录。当我使用log.info或类似工具进行日志记录时,输出会写入catalina.out,这与Tomcat用于内部日志记录的日志文件相同。我希望将应用程序中的日志写入一个单独的日志文件。但我不想使用logback的FileAppender来实现这一点。我更喜欢使用ConsoleAppender离开Logback,因为我可能会将战争交付给其他没有同样日志需求的人。我认为日志文件的位置是部署环境的一个方面,而不是代码Java 如何在Tomcat中分离web应用程序日志,java,tomcat,logging,logback,slf4j,Java,Tomcat,Logging,Logback,Slf4j,我的webapp some-app.war在Tomcat 8.5下运行。我使用Slf4j和Logback在webapp中进行日志记录。当我使用log.info或类似工具进行日志记录时,输出会写入catalina.out,这与Tomcat用于内部日志记录的日志文件相同。我希望将应用程序中的日志写入一个单独的日志文件。但我不想使用logback的FileAppender来实现这一点。我更喜欢使用ConsoleAppender离开Logback,因为我可能会将战争交付给其他没有同样日志需求的人。我认为
有没有一种方法可以让我在代码中仍然使用Slf4j和Logback的情况下,通过Tomcat服务器本身的配置来管理每个应用程序的日志文件?您无法了解其他人的日志记录需求,因此没有一个银弹解决方案。但是我相信最好的选择不是我会让它配置得非常糟糕,因为有人可能会以不同的方式登录 您可以根据自己的意愿,使用FileAppender对其进行配置,并记录重新配置所需的步骤,例如编辑war 您还可以使用更高级的配置,例如使用syslog。现在,其他用户有一个标准化的配置选项,只要他们使用syslog即可
还有其他选择,但这里的共同点是你不知道别人想要什么,所以不要浪费时间去猜测。至少要做对你来说有效的事情。如果你把logging.properties放在[CATALINA_HOME/conf/logging.properties]上,那么它应该将它用作你的根日志属性文件。将logging.properties或log.xml文件放在应用程序的[MyApp/WEB\u INF/classes/logging.properties]中,并像blow一样进行配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="stderr" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="Target" value="System.err"/>
<param name="ConversionPattern"
value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="Target" value="System.out"/>
<param name="ConversionPattern"
value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<appender name="file" class="org.apache.log4j.RollingFileAppender">
<param name="append" value="true" />
<param name="maxFileSize" value="2MB" />
<param name="maxBackupIndex" value="100" />
<param name="file" value="${catalina.base}/logs/MyApp/MyApp.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="stdout" />
<appender-ref ref="stderr" />
<appender-ref ref="file" />
</root>
</log4j:configuration>
了解ConsolePender将默认为catalina.out。在tomcat/lib/logback.xml中设置FileAppender有什么问题?