Spring集成Log4j日志框架

时间:2022-12-31 21:49:19

1.日志系统介绍

slf4j,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。简答的讲就是slf4j是一系列的日志接口,而log4j是具体实现了的日志框架

slf4j与常用日志框架绑定关系,图片来源

Spring集成Log4j日志框架

 

2.Maven导入slf4j和log4j,编辑pom.xml

<!-- 导入slf4j-log4j12,依赖slf4j-api和log4j,自动导入 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>

 

3.log4j日志框架配置,编辑log4j.xml

log4j的xml配置方式基本步骤有3个,第一步:配置appender;第二步:配置logger;第三步:配置root。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- 输出信息到控制台,用于开发调试 -->
<appender name="myConsole" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{dd HH:mm:ss,SSS\} %-5p] [%t] (%F:%L) - %m%n"/>
</layout>
<!-- 日志过滤条件,输出哪些日志 -->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<!-- OFF FATAL ERROR WARN INFO DEBUG TRACE ALL -->
<param name="levelMin" value="debug"/>
<param name="levelMax" value="fatal"/>
<param name="AcceptOnMatch" value="true"/>
</filter>
</appender>

<!-- 输出信息到文件,每天产生一个日志文件 -->
<appender name="myFile" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="${catalina.base}/logs/log4j.log"/>
<param name="Append" value="true"/>
<!-- 日志输出的最低等级 -->
<param name="Threshold" value="debug"/>
<param name="MaxFileSize" value="100MB"/>
<param name="MaxBackupIndex" value="10"/>
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{dd HH:mm:ss,SSS\} %-5p] [%t] (%F:%L) - %m%n"/>
</layout>
</appender>

<!-- 日志记录器 -->
<logger name="com.learn.spring.server" additivity="false">
<!-- Logger中定义的level和appender中的filter定义的level的区间取交集 -->
<level value="INFO"/>
<!-- 默认作用于所有的appender -->
<appender-ref ref="myConsole"/>
<appender-ref ref="myFile"/>
</logger>

<root>
<priority value="ALL"/>
<appender-ref ref="myConsole"/>
</root>
</log4j:configuration>

 

4.日志信息格式中的符号含义

%p: 输出日志信息优先级,即TRACE,DEBUG,INFO,WARN,ERROR,FATAL
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中
%%: 输出一个"%"字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行