首页 > 代码库 > 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     <!--&lt;!&ndash; 保留 30天数据,默认无限&ndash;&gt;-->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     <!--&lt;!&ndash; 最多保留10个文件,默认是7 &ndash;&gt;-->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配置文件