IDEA整合SSM框架之配置日志logback(七)

释放双眼,带上耳机,听听看~!

IDEA整合SSM框架

  • 配置日志logback

  • 引入logback相关依赖

    • 在resources的根目录下创建logback.xml
    • 在web.xml配置logback.xml
    • 运行项目,查看日志打印结果

配置日志logback

Logback是一个开源日志组件,性能比log4j号官方网站: http://logback.qos.ch。它分为下面下个模块:

  • logback-core:其它两个模块的基础模块
  • logback-classic:是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging
  • logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能

本文演示logback的使用、配置详解、以及与lombok插件一起使用。

在配置logback之前,请配置lombok日志打印工具,也可使用Logger工具

lombok相关配置

引入logback相关依赖


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1<!--logback 日志处理-->
2    <dependency>
3        <groupId>ch.qos.logback</groupId>
4        <artifactId>logback-classic</artifactId>
5        <version>1.2.3</version>
6    </dependency>
7    <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-core -->
8    <dependency>
9        <groupId>ch.qos.logback</groupId>
10        <artifactId>logback-core</artifactId>
11        <version>1.2.3</version>
12    </dependency>
13    <!-- https://mvnrepository.com/artifact/org.logback-extensions/logback-ext-spring -->
14    <dependency>
15        <groupId>org.logback-extensions</groupId>
16        <artifactId>logback-ext-spring</artifactId>
17        <version>0.1.4</version>
18    </dependency>
19</dependencies>
20
21

在resources的根目录下创建logback.xml


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
1<?xml version="1.0" encoding="UTF-8"?>
2<!-- 从高到地低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->
3<!-- 日志输出规则  根据当前ROOT 级别,日志输出时,级别高于root默认的级别时  会输出 -->
4<!-- 以下  每个配置的 filter 是过滤掉输出文件里面,会出现高级别文件,依然出现低级别的日志信息,通过filter 过滤只记录本级别的日志-->
5<!-- 属性描述 scan:性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
6debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
7<configuration scan="true" debug="false">
8    <!-- 自定义定义日志文件 输入位置 tomcat 下的logs路径下 可以更改位置 -->
9    <property name="path" value="../logs/demo-springmvc"/>
10
11    <!--%highlight() 颜色打印 不同级别日志打印不同颜色-->
12    <property name="CONSOLE_LOG_PATTERN" value="%highlight(%d{yyyy-MM-dd HH:mm:ss.SSS}  %-5level [%thread] [line%4line] %logger{50} : %msg %n)"/>
13    <!--info级别日志文件配置-->
14    <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
15        <encoder>
16            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [line%4line] %logger{50} : %msg%n</pattern>
17            <charset>UTF-8</charset>
18            <!-- 此处设置字符集,防止中文乱码 -->
19        </encoder>
20
21        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
22            <fileNamePattern>${path}/info/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
23            <timeBasedFileNamingAndTriggeringPolicy
24                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
25                <!-- 最大64MB 超过最大值,会重新建一个文件-->
26                <maxFileSize>64 MB</maxFileSize>
27            </timeBasedFileNamingAndTriggeringPolicy>
28        </rollingPolicy>
29        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
30            <level>INFO</level>
31        </filter>
32
33        <!-- Safely log to the same file from multiple JVMs. Degrades performance! -->
34        <!--如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。-->
35        <prudent>false</prudent>
36    </appender>
37    <!--警告文件配置-->
38    <appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
39        <encoder>
40            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [line%4line] %logger{50} : %msg%n</pattern>
41            <charset>UTF-8</charset>
42            <!-- 此处设置字符集,防止中文乱码 -->
43        </encoder>
44        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
45            <fileNamePattern>${path}/warn/warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
46            <timeBasedFileNamingAndTriggeringPolicy
47                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
48                <!-- 最大64MB 超过最大值,会重新建一个文件-->
49                <maxFileSize>64 MB</maxFileSize>
50            </timeBasedFileNamingAndTriggeringPolicy>
51        </rollingPolicy>
52        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
53            <level>WARN</level>
54        </filter>
55
56        <!-- Safely log to the same file from multiple JVMs. Degrades performance! -->
57        <!--如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。-->
58        <prudent>false</prudent>
59    </appender>
60    <!--错误日志配置-->
61    <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
62        <!-- 文件输出的日志 的格式 -->
63        <encoder>
64            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [line%4line] %logger{50} : %msg%n</pattern>
65            <charset>UTF-8</charset>
66            <!-- 此处设置字符集,防止中文乱码 -->
67        </encoder>
68        <!-- 配置日志所生成的目录以及生成文件名的规则 在logs/mylog-2016-10-31.0.log -->
69        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
70            <fileNamePattern>${path}/error/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
71            <timeBasedFileNamingAndTriggeringPolicy
72                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
73                <!-- 最大64MB 超过最大值,会重新建一个文件-->
74                <maxFileSize>64 MB</maxFileSize>
75            </timeBasedFileNamingAndTriggeringPolicy>
76        </rollingPolicy>
77        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
78            <level>ERROR</level>
79        </filter>
80        <!-- Safely log to the same file from multiple JVMs. Degrades performance! -->
81        <!--如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。-->
82        <prudent>false</prudent>
83    </appender>
84    <!--debug配置-->
85    <appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
86        <!-- 文件输出的日志 的格式 -->
87        <encoder>
88            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [line%4line] %logger{50} : %msg%n</pattern>
89            <charset>UTF-8</charset>
90            <!-- 此处设置字符集,防止中文乱码 -->
91        </encoder>
92        <!-- 配置日志所生成的目录以及生成文件名的规则 在logs/mylog-2016-10-31.0.log -->
93        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
94            <fileNamePattern>${path}/debug/debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
95            <timeBasedFileNamingAndTriggeringPolicy
96                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
97                <!-- 最大64MB 超过最大值,会重新建一个文件-->
98                <maxFileSize>64 MB</maxFileSize>
99            </timeBasedFileNamingAndTriggeringPolicy>
100        </rollingPolicy>
101        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
102            <level>DEBUG</level>
103        </filter>
104        <!-- Safely log to the same file from multiple JVMs. Degrades performance! -->
105        <!--如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。-->
106        <prudent>false</prudent>
107    </appender>
108
109    <!--控制台输出的格式设置 -->
110    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
111        <!-- 控制台输出的日志 的格式 -->
112        <encoder>
113            <pattern>
114                ${CONSOLE_LOG_PATTERN}
115            </pattern>
116            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
117        </encoder>
118        <!-- 只是DEBUG级别以上的日志才显示 -->
119        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
120            <level>DEBUG</level>
121        </filter>
122    </appender>
123
124    <!-- root级别 (name = dao 实现SQL打印并写入日志文件,与mybatis-config.xml中的dao.对应)  DEBUG -->
125    <root name="dao" level="DEBUG">
126        <!-- 控制台输出 -->
127        <appender-ref ref="STDOUT"/>
128        <!-- 文件输出 表示开启对应的日志级别 -->
129        <appender-ref ref="FILE_WARN"/>
130        <appender-ref ref="FILE_INFO"/>
131        <appender-ref ref="FILE_ERROR"/>
132        <appender-ref ref="FILE_DEBUG"/>
133    </root>
134</configuration>
135
136

在web.xml配置logback.xml


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
1<?xml version="1.0" encoding="UTF-8"?>
2<web-app xmlns="http://java.sun.com/xml/ns/javaee"
3         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
5        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
6         version="2.5">
7    <display-name>demo-springmvc</display-name>
8    <servlet>
9        <!--与servlet-mapping节点中的servlet-name相同-->
10        <servlet-name>mvc</servlet-name>
11        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
12        <init-param>
13            <param-name>contextConfigLocation</param-name>
14            <!--扫码spring配置文件,会加载以spring-开头的,xml文件-->
15            <param-value>classpath:xml/spring-*.xml</param-value>
16        </init-param>
17        <load-on-startup>1</load-on-startup>
18    </servlet>
19    <servlet-mapping>
20        <!--与servlet节点中的servlet-name相同-->
21        <servlet-name>mvc</servlet-name>
22        <!--可以设置为/   .do等后缀 访问接口时,需要带设置的后缀-->
23        <url-pattern>/</url-pattern>
24    </servlet-mapping>
25    <!--配置logback文件-->
26    <context-param>
27        <param-name>logbackConfigLocation</param-name>
28        <param-value>classpath:logback.xml</param-value>
29    </context-param>
30</web-app>
31
32

说明一下,web.xml与之前配置的xml内容有所不同,如此改变时为了解决引入logback.xml报红色,虽运行程序无影响,老感觉程序报错

将原来文件中的头部


1
2
3
4
5
6
1<!DOCTYPE web-app PUBLIC
2            "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
3            "http://java.sun.com/dtd/web-app_2_3.dtd" >
4    <web-app>
5
6

替换为现在


1
2
3
4
5
6
7
8
1 <?xml version="1.0" encoding="UTF-8"?>
2    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
3             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
5            http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
6             version="2.5">
7
8

运行项目,查看日志打印结果

  • 在TUserServiceImpl中打印日志


1
2
3
4
5
6
7
8
9
10
11
12
1   @Override
2    public Object select(Integer id) {
3        TUser user = tUserMapper.selectByPrimaryKey(id);
4        log.debug(JSON.toJSONString(user));
5        log.info(JSON.toJSONString(user));
6        log.warn(JSON.toJSONString(user));
7        log.error(JSON.toJSONString(user));
8        return user == null ?
9                RestResult.fail("查询失败") : RestResult.ok("查询成功", user);
10    }
11
12
  • 控制台输出四种彩色日志

IDEA整合SSM框架之配置日志logback(七)

  • 在tomcat安装目录下的logs文件下生成对应项目的文件夹demo-springmv

IDEA整合SSM框架之配置日志logback(七)

日志级别设置成debug级别,可打印SQL语句

该章节logback.xml可直接复制粘贴在自己项目中,修改日志存放路径和日志级别,可直接使用。

给TA打赏
共{{data.count}}人
人已打赏
安全经验

职场中的那些话那些事

2021-9-24 20:41:29

安全经验

java高并发(九)线程封闭

2021-11-28 16:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索