首页 > 代码库 > 2017.7.27 logback配置文件
2017.7.27 logback配置文件
参考来自: Java深入 - logback的配置和使用
1 模块组成
logback分成三个模块:logback-core,logback- classic和logback-access。
1 logback-core:其他两个的基础模块。2 logback-classic:log4j的改良版本。完整实现slf4j的api,因此可以很方便的换成其他日志系统。3 logback-access:与servlet集成,提供通过http来访问日志的功能。
2 maven依赖
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j-version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>${logback-version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>{logback-version}</version> </dependency>
3 配置文件
3.1 存放位置
logback的配置文件都放在/src/main/resource/文件夹下的logback.xml文件中,系统会自动找到这个配置文件。
也可以自定义配置文件的位置:
3.2 在控制台输出指定级别的日志
1 <?xml version="1.0" encoding="UTF-8"?> 2 <configuration> 4 <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> 5 <!-- 典型的日志pattern --> 6 <encoder> 7 <pattern>[AAS] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} - %msg%n</pattern> 8 </encoder> 9 </appender>10 <root> 11 <level value="error"/> 12 <appender-ref ref="console"/>13 </root>14 </configuration>
3.3 在文件中存放指定级别的日志
1 <?xml version="1.0" encoding="UTF-8"?> 2 <configuration> 3 <!-- 综合时间与大小的滚动策略,先按小时滚动,小时内的文件大于10mb时再按大小滚动 --> 4 <appender name="logFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> 5 <file>/var/log/local/xinsight/aas/aas.log</file> 6 <Encoding>UTF-8</Encoding> 7 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 8 <fileNamePattern>/var/log/local/xinsight/aas/aas-%d{yyyy-MM-dd_HH}.%i.zip</fileNamePattern> 9 <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">10 <maxFileSize>10MB</maxFileSize>11 </timeBasedFileNamingAndTriggeringPolicy>12 </rollingPolicy>13 14 <encoder>15 <pattern>[AAS] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} - %msg%n</pattern>16 </encoder>17 </appender>18 19 <root>20 <level value="WARN"/>
20 <level value="INFO"/>21 <appender-ref ref="logFile" />22 </root>23 </configuration>
3.4 精确设置每个包下面的日志
2 <logger name="com.service" level="WARN"/>3 <logger name="com.common" level="DEBUG"/>4 <logger name="dao" level="DEBUG">5 <appender-ref ref="file" /> 6 <appender-ref ref="console" /> 7 </logger>
3.5 完整示例
1 <?xml version="1.0" encoding="UTF-8"?> 2 <configuration> 3 4 <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> 5 <!-- 典型的日志pattern --> 6 <encoder> 7 <pattern>[AAS] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} - %msg%n</pattern> 8 </encoder> 9 </appender>10 11 <!-- 演示按时间滚动的策略 -->12 <!--<appender name="defaultlogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">-->13 <!--<file>/tmp/logs/authmgr.log</file>-->14 <!-- -->15 <!--<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">-->16 <!--<fileNamePattern>/tmp/logs/authmgr.%d{yyyy-MM-dd}.log</fileNamePattern>-->17 <!--<!– 保留 30天数据,默认无限–>-->18 <!--<maxHistory>30</maxHistory>-->19 <!--</rollingPolicy>-->20 <!-- -->21 <!--<encoder>-->22 <!--<pattern>%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>-->23 <!--</encoder>-->24 <!--</appender>-->25 26 <!-- 按文件大小滚动的策略 -->27 <!--<appender name="metricsLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">-->28 <!--<file>/tmp/logs/metrics.log</file>-->29 <!-- -->30 <!--<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">-->31 <!--<fileNamePattern>/tmp/logs/metrics.%i.log</fileNamePattern>-->32 <!--<!– 最多保留10个文件,默认是7 –>-->33 <!--<maxIndex>10</maxIndex>-->34 <!--</rollingPolicy>-->35 <!-- -->36 <!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">-->37 <!--<maxFileSize>10MB</maxFileSize>-->38 <!--</triggeringPolicy>-->39 <!-- -->40 <!--<encoder>-->41 <!--<pattern>%msg%n</pattern>-->42 <!--</encoder>-->43 <!--</appender>-->44 45 <!-- 综合时间与大小的滚动策略,先按小时滚动,小时内的文件大于10mb时再按大小滚动 -->46 <appender name="logFile" class="ch.qos.logback.core.rolling.RollingFileAppender">47 <file>/var/log/local/xinsight/aas/aas.log</file>48 49 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">50 <fileNamePattern>/var/log/local/xinsight/aas/aas-%d{yyyy-MM-dd_HH}.%i.zip</fileNamePattern>51 <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">52 <maxFileSize>10MB</maxFileSize>53 </timeBasedFileNamingAndTriggeringPolicy>54 </rollingPolicy>55 56 <encoder>57 <pattern>[AAS] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} - %msg%n</pattern>58 </encoder>59 </appender>84 85 <logger name="com.mchange" level="WARN"/>86 <logger name="com.service" level="DEBUG"/>87 <logger name="dao" level="DEBUG"/>88 89 <!-- root -->90 <root level="WARN">91 <appender-ref ref="console"/>93 <appender-ref ref="logFile" />94 </root>95 </configuration>
3.6 logger和root的区别
参考来自:http://www.cnblogs.com/cb0327/p/5759441.html
1 logger:2 用来设置具体的包或类的日志打印级别。3 仅有一个name属性,一个可选的level和一个可选的addtivity属性。4 addtivity表示是否继承上级的打印级别,比如<logger name="com.service"/>将控制com.service包下的所有类的日志打印,
但是并没用设置打印级别,所以继承他的上级<root>的日志级别“DEBUG”;5 可以指定appender。
6 root:7 也是<loger>元素,但是它是根loger。8 只有一个level属性。
4 代码中使用
1 import org.slf4j.Logger; 2 import org.slf4j.LoggerFactory; 3 4 public abstract class Test{ 5 protected Logger logger = LoggerFactory.getLogger(this.getClass()); 6 7 logger.info("info"); 8 logger.error("error", tenantName, users.size()); 9 logger.debug("debug");10 }
2017.7.27 logback配置文件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。