LogBack学习(1)

snowpage 2013-06-17

最近在学习LogBack相关内容,貌似这东西是Log4j的升级,根据官方说法具体信息参见http://logback.qos.ch/documentation.html,其写文件速度是8或9个微秒,写数据库的时间也在几个毫秒。说是对多线程的日志写入的性能有了大幅度的提升。当前logback有以下几个核心类库:

类库名称
是否必要
logback-access-1.0.13.jar非必要
logback-classic-1.0.13.jar必要
logback-core-1.0.13.jar必要
slf4j-api-1.7.5.jar必要

从其引入的类库可知它是依赖于slf4j的,而logback-access并非是logback的必备包,只有当你需要特殊的日志记录方式,比如socket、数据库方式等等。。

通过对其研究,我写了个测试程序由于Logback是非侵入式的,因此这里列出其配置文件:

<configuration>
  <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />

  <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>MqClearLog.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- rollover daily -->
      <fileNamePattern>MqClearLog-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <!-- or whenever the file size reaches 100MB -->
        <maxFileSize>100MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder>
      <pattern>%msg%n</pattern>
    </encoder>
  </appender>

  <root level="debug">
    <appender-ref ref="ROLLING" />
  </root>

</configuration>

经测试其输出结果为:

引用

16:22:41,200|-INFOinch.qos.logback.classic.LoggerContext[default]-CouldNOTfindresource[logback.groovy]

16:22:41,200|-INFOinch.qos.logback.classic.LoggerContext[default]-CouldNOTfindresource[logback-test.xml]

16:22:41,200|-INFOinch.qos.logback.classic.LoggerContext[default]-CouldNOTfindresource[logback.xml]

16:22:41,201|-INFOinch.qos.logback.classic.LoggerContext[default]-Settingupdefaultconfiguration.

16:22:41.247[main]INFOchapters.configuration.MyApp2-Enteringapplication.

16:22:41.249[main]DEBUGchapters.configuration.Foo-Diditagain!

16:22:41.249[main]INFOchapters.configuration.MyApp2-Exitingapplication.

之后通过阅读官方文档可知去掉”StatusPrinter.print(lc);“此句则不会打印logback的状态,于是我把其去掉了,可之后的输出结果还是和以前的一样,可官方文档上说只要配置文件正确就不会打印可还是有。后经确认为配置问题即

<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />

此句为将logback的状态信息打印到console上(一般为屏幕)将此去掉一切就都OK了。烦恼了好久的问题。

相关推荐