log4j配置文件
1.log4j.(mybatis)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I1e7mW2N-1627697901370)(E:\java文档\暑假笔记\imge\log4j.properties.png)]
log4j.properties
# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE debug info warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
2.(spring)
日志:
pom:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.13.3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.13.3</version>
</dependency>
在Spring项目中使用Log4j2.xml日志
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VvakDXyT-1627697901373)(E:\java文档\暑假笔记\imge\日志添加的log4j位置.png)]
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 配置LoggerConfig,即Appenders的日志级别为WARN -->
<Configuration status="info">
<!-- Appenders支持配置多个Appender,支持向不同的目标输送日志,本例为配置向控制台输出 -->
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%-5level[%d{yyyy/MM/dd HH:mm:ss.SSS}] [%t]: \n\t%logger{36} \n\t%msg %n" />
</Console>
</Appenders>
<!-- Loggers支持配置多个Logger,可引用不同的目标Appender,也可根据业务需求定制特定要求的Appender -->
<Loggers>
<!-- 4个级别低->高:debug,info,warning,error -->
<Root level="info">
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
slf4j+log4j2的配置
昨天自己测试了一下slf4j+log4j2的配置,可以正常使用,虽然配置十分简单,但好记性不如烂笔头,想想还是记录下来吧。
**运行的环境:**jdk1.7、tomcat7、Maven的web项目
1.在新建的maven项目的pom文件中添加jar包依赖(依赖代码在步骤末尾):
需要添加依赖的jar包有:
slf4j的api接口包:slf4j-api
log4j2的核心包:log4j-core
log4j2的api接口包:log4j-api
slf4j对应log4j2日志框架的驱动包:log4j-slf4j-impl
log4j2的异步日志功能包:com.lmax.disruptor
解决web项目log4j可能出现警告的jar包:log4j-web
2.配置log4j2.xml日志配置文件(日志配置文件内容放在步骤末尾):
·日志配置文件默认读取路径为src/main/resource
·若文件放置在默认读取路径下则无需配置读取路径
·若文件放置到其他路径下则需要在web.xml中设置日志配置文件的读取路径,代码如下:
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>classpath:log4j2.xml</param-value>
</context-param>
3.在代码中使用日志功能:
[](javascript:void(0)😉
1 import org.slf4j.Logger;
2 import org.slf4j.LoggerFactory;
3
4 public class logTest {
5
6 // 通过slf4j接口创建Logger对象
7 private static final Logger logger = LoggerFactory.getLogger(logTest.class);
8
9 public static void main(String[] args) {
10 logger.info("this is info");
11 logger.error("this is error");
12 }
13 }
[](javascript:void(0)😉
运行效果:
****关于日志配置文件的详细说明请参考*****log4j2配置文件log4j2.xml详解,以下是pom.xml*需要加入的jar包依赖以及**日志配置文件log4j2.xml内容示例:****
pom.xml需要加入的jar包依赖:
[](javascript:void(0)😉
<properties>
<!-- jar包版本设置 -->
<slf4j.version>1.7.21</slf4j.version>
<log4j.version>2.11.0</log4j.version>
</properties>
<dependencies>
<!-- 导入slf4j的接口包以及对应日志框架的驱动包 -->
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!--用于slf4j与log4j2保持桥接 -->
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<scope>runtime</scope>
<version>${log4j.version}</version>
</dependency>
<!-- 导入日志框架核心包与接口包 -->
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<scope>runtime</scope>
<version>${log4j.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<!--用于解决web环境下关闭服务器时可能出现的log4j线程无法及时关闭的warn,web工程需要包含log4j-web,非web工程不需要 -->
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-web -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<scope>runtime</scope>
<version>${log4j.version}</version>
</dependency>
<!--使用log4j2的AsyncLogger时需要包含disruptor -->
<!-- https://mvnrepository.com/artifact/com.lmax/disruptor -->
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<scope>runtime</scope>
<version>3.4.2</version>
</dependency>
</dependencies>
[](javascript:void(0)😉
日志配置文件内容示例:
[](javascript:void(0)😉
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 <!--
4 日志说明:
5
6 (1)请根据实际情况配置各项参数
7
8 (2)需要注意日志文件备份数和日志文件大小,注意预留目录空间
9
10 (3)实际部署的时候backupFilePatch变量需要修改成linux目录
11
12 -->
13
14 <configuration status="error">
15
16 <Properties>
17
18 <Property name="fileName">front.log</Property>
19
20 <Property name="backupFilePatch">d:/usr/front/log/</Property>
21
22 </Properties>
23
24 <!--先定义所有的appender-->
25
26 <appenders>
27
28 <!--这个输出控制台的配置-->
29
30 <Console name="Console" target="SYSTEM_OUT">
31
32 <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
33
34 <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
35
36 <!--这个都知道是输出日志的格式-->
37
38 <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
39
40 </Console>
41
42
43
44 <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
45
46 <RollingFile name="RollingFile" fileName="${backupFilePatch}/${fileName}"
47
48 filePattern="${backupFilePatch}$${date:yyyy-MM}/app-%d{yyyyMMddHHmmssSSS}.log.gz">
49
50 <PatternLayout
51
52 pattern="%d{yyyy-MM-dd HH:mm:ss.SSS z} %-5level %class{36} %L %M - %msg%xEx%n" />
53
54
55
56 <!-- 日志文件大小 -->
57
58 <SizeBasedTriggeringPolicy size="20MB" />
59
60 <!-- 最多保留文件数 -->
61
62 <DefaultRolloverStrategy max="20"/>
63
64 </RollingFile>
65
66 </appenders>
67
68
69
70 <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
71
72 <loggers>
73
74 <!--建立一个logger,此logger监听name对应的包名下的日志输出,level表示日志级别-->
75
76 <Logger name="com.testlog" level="trace"
77
78 additivity="true">
79
80 <AppenderRef ref="RollingFile" />
81
82 </Logger>
83
84 <!--建立一个默认的root的logger-->
85
86 <Root level="error">
87
88 <!-- 在root中关联appender才会在对应的位置输出日志,定义一个输出到文件的appender也必须关联到此处才会保存日志到文件 -->
89
90 <AppenderRef ref="Console" />
91
92 </Root>
93
94 </loggers>
95
96 </configuration>
(4)测试:
package` `cn.zifangsky.controller;` `import` `org.apache.log4j.Logger;` `import` `org.springframework.stereotype.Controller;` `import` `org.springframework.web.bind.annotation.RequestMapping;` `@Controller` `public` `class` `TestController {` ` ``private` `static` `Logger logger = Logger.getLogger(TestController.``class``);` ` ` ` ``@RequestMapping``(``"/test.html"``)` ` ``public` `void` `test(){` ` ``logger.info(``"info测试"``);` ` ``logger.debug(``"debug测试 "``);` ` ``logger.error(``"error测试"``);` ` ``}` `}
控制台输出如下:
[INFO ] 2016-11-06 18:01:28,000 method:cn.zifangsky.controller.TestController.test(TestController.java:13)` `info测试` `[DEBUG] 2016-11-06 18:01:28,007 method:cn.zifangsky.controller.TestController.test(TestController.java:14)` `debug测试 ` `[ERROR] 2016-11-06 18:01:28,007 method:cn.zifangsky.controller.TestController.test(TestController.java:15)` `error测试
debug.log文件:
2016-11-06 18:01:28 [ http-apr-9180-exec-10:0 ] - [ INFO ] info测试` `2016-11-06 18:01:28 [ http-apr-9180-exec-10:7 ] - [ DEBUG ] debug测试 ` `2016-11-06 18:01:28 [ http-apr-9180-exec-10:7 ] - [ ERROR ] error测试
error.log文件:
2016-11-06 18:01:28 [ http-apr-9180-exec-10:7 ] - [ ERROR ] error测试
:01:28,007 method:cn.zifangsky.controller.TestController.test(TestController.java:15)` `error测试
debug.log文件:
2016-11-06 18:01:28 [ http-apr-9180-exec-10:0 ] - [ INFO ] info测试` `2016-11-06 18:01:28 [ http-apr-9180-exec-10:7 ] - [ DEBUG ] debug测试 ` `2016-11-06 18:01:28 [ http-apr-9180-exec-10:7 ] - [ ERROR ] error测试
error.log文件:
2016-11-06 18:01:28 [ http-apr-9180-exec-10:7 ] - [ ERROR ] error测试