我的webapp some-app.war在Tomcat8.5下运行。我使用Slf4j和Logback在the应用程序中进行日志记录。当我使用log.info()或类似工具进行日志记录时,输出会写入到catalina.out中,这与Tomcat用于内部日志记录的日志文件相同。我希望将应用程序中的日志写入到单独的日志文件中。但是我不想使用logback的FileAppender来做这件事。我更喜欢使用ConsoleAppender离开Logback,因为我可能会将WAR交付给没有相同日志需求的其他人。我认为日志文件的位置是部署环境的一个方面,而不是代码。
有没有一种方法可以从Tomcat服务器本身的配置中管理每个应用程序的日志文件--同时在我的代码中仍然使用Slf4j和Logback?
发布于 2018-01-15 18:49:31
您无法了解其他人的日志记录需求,因此没有解决此问题的灵丹妙药。然而,我确信最好的选择不是“我会让它配置得很糟糕,因为有人可能会以不同的方式登录”。
您可以使用FileAppenders按照自己的意愿配置它,并记录重新配置它的必要步骤(例如,编辑war)。
您还可以使用更高级的配置,例如使用syslog。现在,其他用户有一个标准化的配置选项,只要他们使用syslog即可。
还有其他选择,但这里的共同点是你不知道别人想要什么,所以不要浪费时间去猜测它。只做对你来说最好的事情。
发布于 2018-02-13 21:17:05
如果您将logging.properties放在CATALINA_HOME/conf/logging.properties,那么它应该使用它作为根日志记录属性文件。将logging.properties或log.xml文件放入应用程序中的MyApp/WEB_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>https://stackoverflow.com/questions/48226665
复制相似问题