Ste*_*ies 10 logging log4j logback maven
在使用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" />
<appender-ref ref="FILE" />
</root>
</configuration>
Run Code Online (Sandbox Code Playgroud)
您可以使用配置文件在环境之间切换.假设您有本地和prod的两个不同的logback.xml文件.在资源目录中创建一个logback目录.在资源目录中,创建特定于环境的目录.目录名称和属性内的envName应匹配.这是一个例子.
<profiles>
<profile>
<id>local</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<envName>local</envName>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<envName>prod</envName>
</properties>
</profile>
</profiles>
<build>
<finalName>kp-prj</finalName>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/java</directory>
<includes>
<include>**/*.class</include>
</includes>
</resource>
<resource>
<directory>src/main/resources/logback/${envName}</directory>
</resource>
</resources>
</build>
Run Code Online (Sandbox Code Playgroud)
在使用running maven命令时,您可以指定配置文件.
mvn run -Plocal
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9841 次 |
| 最近记录: |