日志的重要组件
1. 日志信息优先级
- TRACE:追踪
- DEBUG:调试
- INOFO:信息
- WARN:警告
- ERROR:错误
- FATAL:严重错误
当设置了高级别的日志,比该日志级别低的日志都不会显示。
2. 日志输出的位置
可以指定日志输出到控制台还是文件
3. 日志信息的输出格式
可以控制日志信息的显示内容
使用Log4j2
引入Log4j2依赖
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.19.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>2.19.0</version>
</dependency>
在src/main/resources/
下创建log4j2.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<loggers>
<root level="DEBUG">
<appender-ref ref="spring6log"/>
<appender-ref ref="RollingFile"/>
<appender-ref ref="log"/>
</root>
</loggers>
<appenders>
<!--输出日志信息到控制台-->
<console name="spring6log" target="SYSTEM_OUT">
<!--控制台输出的格式-->
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss SSS} [%t] %-3level %logger{1024} - %msg%n"/>
</console>
<!--文件会打印所有信息,这个log每次运行都会自动清空。fileName是文件的输出路径,如果不存在会被创建-->
<File name="log" fileName="d:/spring6_log/test.log" append="false">
<PatternLayout pattern="%d{HH:mm:ss SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
</File>
<!--打印所有信息,如果单次大小超过size则size大小的日志会自动存到年-月文件夹下面进行压缩存档-->
<RollingFile name="RollingFile" fileName="d:/spring6_log/app.log"
filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
<SizeBasedTriggeringPolicy size="50MB"/>
<!--设置同一文件夹下最多有的文件数,默认为7-->
<DefaultRolloverStrategy max="20"/>
</RollingFile>
</appenders>
</configuration>
重新运行test1,代码在[[02.创建最简单的Spring模块]]最后一个代码块
控制台输出:
2023-05-19 15:03:37 663 [main] DEBUG org.springframework.context.support.ClassPathXmlApplicationContext - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@3bcd05cb
2023-05-19 15:03:37 778 [main] DEBUG org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loaded 1 bean definitions from class path resource [bean.xml]
2023-05-19 15:03:37 806 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'user'
无参构造被调用了
add.....
手动写入日志
-
创建Logger对象
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestUser { private Logger logger = LoggerFactory.getLogger(TestUser.class); }
-
手动写日志
@Test public void Test3(){ Test1(); logger.info("Test1调用成功了"); }
-
控制台输出:
2023-05-19 15:16:41 461 [main] DEBUG org.springframework.context.support.ClassPathXmlApplicationContext - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@6ca18a14 2023-05-19 15:16:41 582 [main] DEBUG org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loaded 1 bean definitions from class path resource [bean.xml] 2023-05-19 15:16:41 609 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'user' 无参构造被调用了 add..... 2023-05-19 15:16:41 640 [main] INFO TestUser - Test1调用成功了
app.log:
2023-05-19 at 15:03:37 806 DEBUG org.springframework.beans.factory.support.DefaultSingletonBeanRegistry 225 getSingleton - Creating shared instance of singleton bean 'user' 2023-05-19 at 15:16:41 461 DEBUG org.springframework.context.support.AbstractApplicationContext 630 prepareRefresh - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@6ca18a14 2023-05-19 at 15:16:41 582 DEBUG org.springframework.beans.factory.xml.XmlBeanDefinitionReader 393 doLoadBeanDefinitions - Loaded 1 bean definitions from class path resource [bean.xml] 2023-05-19 at 15:16:41 609 DEBUG org.springframework.beans.factory.support.DefaultSingletonBeanRegistry 225 getSingleton - Creating shared instance of singleton bean 'user' 2023-05-19 at 15:16:41 640 INFO TestUser 34 Test3 - Test1调用成功了
test.log:
15:16:41 461 DEBUG org.springframework.context.support.AbstractApplicationContext 630 prepareRefresh - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@6ca18a14 15:16:41 582 DEBUG org.springframework.beans.factory.xml.XmlBeanDefinitionReader 393 doLoadBeanDefinitions - Loaded 1 bean definitions from class path resource [bean.xml] 15:16:41 609 DEBUG org.springframework.beans.factory.support.DefaultSingletonBeanRegistry 225 getSingleton - Creating shared instance of singleton bean 'user' 15:16:41 640 INFO TestUser 34 Test3 - Test1调用成功了