如何在Tomcat中分离Web应用程序日志记录

时间:2018-01-12 12:52:01

标签: java tomcat logging logback slf4j

我的网络应用some-app.war在Tomcat 8.5下运行。我使用Slf4j和Logback在webapp中进行日志记录。当我使用log.info()或类似的日志进行日志记录时,输出将写入catalina.out,这是Tomcat用于其内部日志记录的相同日志文件。我希望将应用程序中的日志写入单独的日志文件。但我不想使用logback的FileAppender来做这件事。我宁愿使用ConsoleAppender保留Logback,因为我可能会将WAR传递给不具备相同日志记录需求的其他人。我将日志文件的位置视为部署环境的一个方面,而不是代码。

有没有办法可以从Tomcat服务器本身的配置中管理每个应用程序日志文件 - 同时仍在我的代码中使用Slf4j和Logback?

2 个答案:

答案 0 :(得分:1)

您无法了解他人的信息。记录需求,所以这不是一个银弹解决方案。但是我确定最好的选择不是"我会把它配置得非常糟糕,因为有人可能会以不同的方式记录#34;。

您可以使用awk -v n=7 '/profile/{p=n-1} --p>0{next} 1' file 配置自己的方式,并记录重新配置的必要步骤(例如编辑战争)。

您还可以使用更高级的配置,例如使用syslog。现在其他用户都有标准化的配置选项,只要他们使用syslog。

还有其他选择,但这里的共同点是你不能知道别人想要什么,所以不要浪费时间去猜测它。只做适合自己的事情。

答案 1 :(得分:0)

如果您将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>
相关问题