因为现在开发的项目是一个软件与硬件实时通讯的系统,软件实时在采集周边设备的记录,周边的设备也有可能在实时的上传记录,所以我必须得做一个日志来记录每一个动作,当软件与硬件之间的通讯发生异常时,通过日志就可以比较方便的找出错误,如软件指令是否正确,下发指令是否得到硬件的响应。好了,多的不说,直接上配置吧。
<!-- 使用定期扫描策略,每隔5秒扫描一下,这样改日志配置后就不用重启软件了 -->
<configuration scan="true" scanPeriod="5 seconds">
<appender name="DEVICE_MESSAGE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 默认日志文件,当这个文件达到10MB后,会创建一个新的message.txt,而将原来的那个改名为日期的名称格式 -->
<file>log/device/message.txt</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 生成日志文件的名称格式 -->
<fileNamePattern>log/device/message-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
<maxHistory>15</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 日志文件最大size -->
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<!-- 日志的显示格式 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!--没有指定设置包的具体规则时,则会默认使用root配置-->
<root level="debug">
<appender-ref ref="DEVICE_MESSAGE_DEBUG"/>
</root>
</configuration>
生成的日志如下情况如下:
message.txt
message-2014-05-09.0.txt
message-2014-05-09.1.txt
message-2014-05-09.2.txt
message-2014-05-09.3.txt
至于日志配置文件也是我们要考虑的一个问题,一般我们会将其放在classpath下。总之打包出来的jar一般会把这个配置文件一起打包进去,其实这个配置文件也可以手动定义路径,方法如下:
static{
LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory();
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(lc);
lc.reset();
try {
configurator.doConfigure("logback.xml");
} catch (JoranException e) {e.printStackTrace();}
}
在启动时静态的加载这个配置,就可以重新定义配置文件的路径了。