1. 程式人生 > >2017.7.27 logback配置文件

2017.7.27 logback配置文件

edt lan nal div 代碼 sed ack erro cte

參考來自: 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配置文件