LogBack实战(Maven)

简介

    Logback是由log4j创始人设计的又一个开源日志组件。html

                logback当前分红三个模块:logback-core,logback- classic和logback-access。java

                logback-core是其它两个模块的基础模块。node

                logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你能够很方便地更换成其它日志系统如log4j或JDK14 Logging。web

                logback-access访问模块与Servlet容器集成提供经过Http来访问日志的功能。spring

 

 

导入依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
                         <dependency>
                 <groupId>org.slf4j</groupId>
                 <artifactId>slf4j-api</artifactId>
                 <version> 1.7 . 7 </version>
             </dependency>
             <dependency>
                 <groupId>ch.qos.logback</groupId>
                 <artifactId>logback-core</artifactId>
                 <version> 1.1 . 3 </version>
             </dependency>
             <dependency>
                 <groupId>ch.qos.logback</groupId>
                 <artifactId>logback-access</artifactId>
                 <version> 1.1 . 3 </version>
             </dependency>
             <dependency>
                 <groupId>ch.qos.logback</groupId>
                 <artifactId>logback-classic</artifactId>
                 <version> 1.1 . 3 </version>
             </dependency>

配置文件位置

    logback的配置文件都放在/src/main/resource/文件夹下的logback.xml文件中。放置好了以后,若是不明白的话,能够找一些Java视频看下系统会自动找到这个配置文件。api

 

配置文件详解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
<?xml version= "1.0"  encoding= "UTF-8" ?>
 
<!-- 级别从高到低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->
<!-- 日志输出规则 根据当前ROOT 级别,日志输出时,级别高于root默认的级别时 会输出 -->
<!-- 如下 每一个配置的 filter 是过滤掉输出文件里面,会出现高级别文件,依然出现低级别的日志信息,经过filter 过滤只记录本级别的日志 -->
<!-- scan 当此属性设置为 true 时,配置文件若是发生改变,将会被从新加载,默认值为 true 。 -->
<!-- scanPeriod 设置监测配置文件是否有修改的时间间隔,若是没有给出时间单位,默认单位是毫秒。当scan为 true 时,此属性生效。默认的时间间隔为 1 分钟。 -->
<!-- debug 当此属性设置为 true 时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为 false 。 -->
<configuration scan= "true"  scanPeriod= "60 seconds"  debug= "false" >
 
     <!-- 动态日志级别 -->
     <jmxConfigurator />
     
     <!-- 定义日志文件 输出位置 -->
     <property name= "log_dir"  value= "myCat_log"  />
     
     <!-- 日志最大的历史  30 天 -->
     <property name= "maxHistory"  value= "30"  /> 
        
     <!-- ConsoleAppender 控制台输出日志 -->
     <appender name= "console"  class = "ch.qos.logback.core.ConsoleAppender" >
         <encoder>
             <pattern>
                 <!-- 设置日志输出格式 -->
                 %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger - %msg%n
             </pattern>
         </encoder>
     </appender>
 
     <!-- ERROR级别日志 -->
     <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其余文件 RollingFileAppender -->
     <appender name= "ERROR"
         class = "ch.qos.logback.core.rolling.RollingFileAppender" >
         <!-- 过滤器,只记录WARN级别的日志 -->
         <!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 -->
         <filter  class = "ch.qos.logback.classic.filter.LevelFilter" >         
             <!-- 设置过滤级别 -->
             <level>ERROR</level>
             <!-- 用于配置符合过滤条件的操做 -->
             <onMatch>ACCEPT</onMatch>
             <!-- 用于配置不符合过滤条件的操做 -->
             <onMismatch>DENY</onMismatch>
         </filter>
         <!-- 最经常使用的滚动策略,它根据时间来制定滚动策略.既负责滚动也负责出发滚动 -->
         <rollingPolicy  class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >
             <!--日志输出位置 可相对、和绝对路径 -->
             <fileNamePattern>
             ${log_dir}/error/%d{yyyy-MM-dd}/error-log.log
             </fileNamePattern>
             <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每一个月滚动,且<maxHistory>是 6 , 则只保存最近 6 个月的文件,删除以前的旧文件。注意,删除旧文件是,那些为了归档而建立的目录也会被删除 -->
             <maxHistory>${maxHistory}</maxHistory>
         </rollingPolicy>
         <encoder>
             <pattern>
                 <!-- 设置日志输出格式 -->
                 %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger - %msg%n
             </pattern>
         </encoder>
     </appender>
 
     
     <!-- WARN级别日志 appender -->
     <appender name= "WARN"  class = "ch.qos.logback.core.rolling.RollingFileAppender" >
         <!-- 过滤器,只记录WARN级别的日志 -->
         <!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 -->
         <filter  class = "ch.qos.logback.classic.filter.LevelFilter" >
             <!-- 设置过滤级别 -->
             <level>WARN</level>
             <!-- 用于配置符合过滤条件的操做 -->
             <onMatch>ACCEPT</onMatch>
             <!-- 用于配置不符合过滤条件的操做 -->
             <onMismatch>DENY</onMismatch>
         </filter>
         <rollingPolicy  class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >
             <!--日志输出位置 可相对、和绝对路径 -->
             <fileNamePattern>${log_dir}/warn/%d{yyyy-MM-dd}/warn-log.log</fileNamePattern>
             <maxHistory>${maxHistory}</maxHistory> 
         </rollingPolicy>
         <encoder>
             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern>
         </encoder>
     </appender>
     
     
      <!-- INFO级别日志 appender -->
     <appender name= "INFO"  class = "ch.qos.logback.core.rolling.RollingFileAppender" >
         <filter  class = "ch.qos.logback.classic.filter.LevelFilter" >
             <level>INFO</level>
             <onMatch>ACCEPT</onMatch>
             <onMismatch>DENY</onMismatch>
         </filter>
         <rollingPolicy  class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >
             <fileNamePattern>${log_dir}/info/%d{yyyy-MM-dd}/info-log.log</fileNamePattern> 
             <maxHistory>${maxHistory}</maxHistory> 
         </rollingPolicy>
         <encoder>
             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern>
         </encoder>
     </appender>
     
     
     <!-- DEBUG级别日志 appender -->
     <appender name= "DEBUG"  class = "ch.qos.logback.core.rolling.RollingFileAppender" >
         <filter  class = "ch.qos.logback.classic.filter.LevelFilter" >
             <level>DEBUG</level>
             <onMatch>ACCEPT</onMatch>
             <onMismatch>DENY</onMismatch>
         </filter>
         <rollingPolicy  class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >
             <fileNamePattern>${log_dir}/debug/%d{yyyy-MM-dd}/debug-log.log</fileNamePattern> 
             <maxHistory>${maxHistory}</maxHistory> 
         </rollingPolicy>
         <encoder>
             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern>
         </encoder>
     </appender>
     
     
     <!-- TRACE级别日志 appender -->
     <appender name= "TRACE"  class = "ch.qos.logback.core.rolling.RollingFileAppender" >
         <filter  class = "ch.qos.logback.classic.filter.LevelFilter" >
             <level>TRACE</level>
             <onMatch>ACCEPT</onMatch>
             <onMismatch>DENY</onMismatch>
         </filter>
         <rollingPolicy  class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >
             <fileNamePattern>${log_dir}/trace/%d{yyyy-MM-dd}/trace-log.log</fileNamePattern> 
             <maxHistory>${maxHistory}</maxHistory> 
         </rollingPolicy>
         <encoder>
             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern>
         </encoder>
     </appender>
     
     
     <!-- root级别   DEBUG -->
     <root>
         <!-- 打印debug级别日志及以上级别日志 -->
         <level value= "debug"  />
         <!-- 控制台输出 -->
         <appender-ref ref= "console"  />
         <!-- 文件输出 -->
         <appender-ref ref= "ERROR"  />
         <appender-ref ref= "INFO"  />
         <appender-ref ref= "WARN"  />
         <appender-ref ref= "DEBUG"  />
         <appender-ref ref= "TRACE"  />
     </root>
</configuration>

 

使用案例 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package  com.mycat.manager.controller.test;
 
import  org.slf4j.Logger;
import  org.slf4j.LoggerFactory;
import  org.springframework.stereotype.Controller;
import  org.springframework.web.bind.annotation.RequestMapping;
import  org.springframework.web.bind.annotation.ResponseBody;
 
@Controller
@RequestMapping ( "test" )
public  class  TestController {
 
     private  final  Logger logger = LoggerFactory.getLogger( this .getClass());
     
     /**
      * logback测试
      */
     @RequestMapping ( "logbackTest" )
     @ResponseBody
     public  String toBase() {
         logger.debug( "输出debug级别的日志....." );  
         logger.info( "输出info级别的日志....." );  
         logger.error( "输出error级别的日志....." );  
         return  "logbackTest" ;
     }
     
}

 

测试结果

wKioL1d962iiqhT_AANPtYiPFdc668.png

相关文章
相关标签/搜索