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>