logback解决一些日志文件名的问题。

1.场景一:logback中的输出路径想全都指向新的目录下,可是改起来有不少地方……。 java

  解决方案:配置一个全局变量,避免修改的时候处处都要改,这样只须要改一处哦。 web

  

<configuration>
    <property name="USER_HOME" value="/home/sebastien" />
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>${USER_HOME}/myApp.log</file>
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>
    <appender name="FILEBACK" class="ch.qos.logback.core.FileAppender">
        <file>${USER_HOME}/myApp_bak.log</file>
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>
    <root level="debug">
        <appender-ref ref="FILE" />
<appender-ref ref="FILEBACK" />
    </root>
</configuration>
2.场景二:想将一个web项目部署在同一台机器上的两个web容器中,可是同时日志又想单独输出。

解决办法:给web容器启动脚本一个不一样的参数,设置输出目录,让logback去读 app

启动脚本加入 java -DUSER_HOME="/home/sebastien" JavaWeb
spa

<configuration>
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${USER_HOME}/myApp.log</file>
    <encoder>
      <pattern>%msg%n</pattern>
    </encoder>
  </appender>
  <root level="debug">
    <appender-ref ref="FILE" />
  </root>
</configuration>

3.场景三:想给日志文件每次一个相对惟一的名字。 debug

解决办法:使用时间戳做为文件名 日志

<configuration>
  <!-- Insert the current time formatted as "yyyyMMdd'T'HHmmss" under
       the key "bySecond" into the logger context. This value will be
       available to all subsequent configuration elements. -->
  <timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/>

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <!-- use the previously created timestamp to create a uniquely
         named log file -->
    <file>log-${bySecond}.txt</file>
    <encoder>
      <pattern>%logger{35} - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="DEBUG">
    <appender-ref ref="FILE" />
  </root>
</configuration>
相关文章
相关标签/搜索