最近搭建的工程需要用到logback。
首先,要在pom文件中加入几个dependency
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>1.1.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>janino</groupId>
<artifactId>janino</artifactId>
<version>2.5.10</version>
</dependency>
前面几个jar包很好理解,也都会记得加入,但是最后一个,没有标注是和logback有关,但是实际上是控制logback过滤器的,如果没有加入的话,maven工程用jetty还是能起来,但是日志没法输出到.log文件中。
应该是过滤器不工作,根本就没有日志能通过过滤器到log文件。
以下是个人对logback中一些标签的理解,具体讲解可参见
http://blog.csdn.net/haidage/article/details/6794509 logback详细配置(一)
根节点是configuration ,下面有三个并列的子节点appender>,logger>和root>.root其实也属于logger,只不过是特殊的logger。
property标签用来设置变量
<Property name="log.base" value="logs/log" />
${log.base}来使用
timestamp标签用来设置时间戳,,在configuration标签下面,不是必须存在的,包括将当前时间(解析配置文件的时间)转换为指定格式的字符串,遵循java的simpleDateFormat的格式。
<timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/>
logger用来设置某一个包或者类的日志打印级别,指定来自这个包的日志传给哪个appender
可以理解为,每条日志,经过过滤器,先去看是否符合每个logger,如果符合,就去该logger中指定的appender中进行下一步操作(按照格式输出到文件等)
<logger name="com.baidu" >
<level value="ALL" />
</logger>
<logger name="com.baidu.ecomqaep.mvp.mobile.scene.web" >
<level value="INFO" />
<appender-ref ref="apidetail" />
</logger>
root是根logger,只有level属性,无需配置name,因为已经默认好为root了。level设置打印级别(TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF),比如只打印info级别以上的,那么debug就不打印了。默认是debug。
<root>
<level value="INFO" />
<appender-ref ref="stdout" />
<appender-ref ref="logfile" />
<appender-ref ref="errorAppender" />
</root>
appender的配置可以看这里
http://blog.csdn.net/haidage/article/details/6794529