小编Ste*_*ies的帖子

使Logback在本地写入控制台,但在服务器上记录日志文件

在使用Maven 3构建的Web应用程序中,是否有一种方法可以让Logback使用ConsoleAppenderRollingFileAppender依赖应用程序运行的位置/方式?

在生产中,.war文件部署在Tomcat 7上.在本地,我正在运行Jetty Maven插件,以便在开发过程中进行测试.

我想让日志工作像这样:

  • 当我在mvn jetty:run本地运行时:使用ConsoleAppender
  • *.war文件被部署在生产(Tomcat的7):使用RollingFileAppender

在本地开发期间,在控制台上显示所有日志输出似乎非常舒服.在生产中,我宁愿登录到文件:CATALINA_BASE/logs/myApp.log.

显然,你可以只使用一个双方ConsoleAppenderRollingFileAppenderlogback.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)

logging log4j logback maven

10
推荐指数
1
解决办法
9841
查看次数

标签 统计

log4j ×1

logback ×1

logging ×1

maven ×1