在使用Maven 3构建的Web应用程序中,是否有一种方法可以让Logback使用ConsoleAppender或RollingFileAppender依赖应用程序运行的位置/方式?
在生产中,.war文件部署在Tomcat 7上.在本地,我正在运行Jetty Maven插件,以便在开发过程中进行测试.
我想让日志工作像这样:
mvn jetty:run本地运行时:使用ConsoleAppender*.war文件被部署在生产(Tomcat的7):使用RollingFileAppender在本地开发期间,在控制台上显示所有日志输出似乎非常舒服.在生产中,我宁愿登录到文件:CATALINA_BASE/logs/myApp.log.
显然,你可以只使用一个双方ConsoleAppender和RollingFileAppender在logback.xml.但对我而言,将生产中的所有日志输出写入STDOUTAND并将其写入日志文件似乎是不必要的冗余.此外,从Tomcat文档中可以看出,在生产中登录STDOUT通常是一种不好的做法.
我在网上找不到任何好的解决方案.这有一个很好的解决方案吗?
这是我的当前logback.xml总是登录到STDOUT所需的日志文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.base}/logs/myApp.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.base}/logs/myApp.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="com.myDomain.myApp" level="DEBUG" />
<root level="DEBUG">
<appender-ref ref="STDOUT" /> …Run Code Online (Sandbox Code Playgroud)