spring 本文顺序全部按照 spring中文文档顺序进行的 地址:spring中文地址
- Logging 日志
1.使用 Log4j 1.2 或 2.x
maven依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.21.RELEASE</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
resource下面创建 log4j2.properties
### 设置###
log4j.rootLogger = debug,stdout,D,E
### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
- Log4j 2.x 与 JCL 一起使用
加入依赖
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>2.6.2</version>
</dependency>
</dependencies>
log4j2.properties文件内容
#用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,会看到log4j2内部各种详细输出
status = debug
dest = err
name = PropertiesConfig
#日志文件名称
property.filename = d:/logs/rollingtest.log
#日志文件内容的格式,说明:
#%n-换行
#%m-日志内容
#%p-日志级别(FATAL,ERROR,WARN...)
#%F-java源文件名
#%t 输出产生该日志事件的线程名
#%d 输出日志时间点的日期或时间
#%L-java源码行数
#%C-java类名
#%M-java方法名
#%l-输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数
property.layoutPattern = %-d{yyyy-MM-dd HH:mm:ss,SSS} %p %c %m%n
# 级别过滤(过滤日志记录)
filter.threshold.type = ThresholdFilter
# 只记录debug级别以上的日志,大小写无关:(ALL<)TRACE<DEBUG<INFO<WARN<ERROR<FATAL(<OFF)
filter.threshold.level = debug
# 控制台类型的日志输出源
appender.console.type = Console
# 输出源的名称
appender.console.name = STDOUT
#输出类型
appender.console.target = SYSTEM_OUT
# 输出布局类型
appender.console.layout.type = PatternLayout
# 输出模板
appender.console.layout.pattern = ${layoutPattern}
# 文件日志输出源
appender.rolling.type = RollingFile
#输入源名称
appender.rolling.name = RollingFile
#日志文件名
appender.rolling.fileName = ${filename}
#指定当发生文件滚动时,文件重命名规则
appender.rolling.filePattern = d:/logs/test1-%d{yyyyMMdd}-%i.log
# 滚动记录输出源布局类型
appender.rolling.layout.type = PatternLayout
# 输出模板
appender.rolling.layout.pattern = ${layoutPattern}
# 指定记录文件的保存策略,该策略主要是完成周期性的日志文件保存工作
appender.rolling.policies.type = Policies
# 基于时间的触发策略(TriggeringPolicy)
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
# 当前记录周期为每2秒生成一个文件,如果filePattern中配置的文件重命名规则是test1-%d{yyyy-MM-dd HH-mm}-%i,
#最小的时间粒度是mm,即分钟,TimeBasedTriggeringPolicy指定的size是1,结合起来就是每2分钟生成一个新文件。
#如果改成%d{yyyy-MM-dd HH},最小粒度为小时,则每2个小时生成一个文件。
appender.rolling.policies.time.interval = 2
# 是否对保存时间进行限制。若modulate=true,则保存时间将以0点为边界进行偏移计算。
#比如,modulate=true,interval=4hours,
#那么假设上次保存日志的时间为03:00,则下次保存日志的时间为04:00,之后的保存时间依次为08:00,12:00,16:00
appender.rolling.policies.time.modulate = true
# 基于日志文件大小的触发策略
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
# 当日志文件大小大于size指定的值时,触发滚动
appender.rolling.policies.size.size=100MB
# 文件保存的覆盖策略
appender.rolling.strategy.type = DefaultRolloverStrategy
# 生成分割(保存)文件的个数,默认为5(-1,-2,-3,-4,-5)
appender.rolling.strategy.max = 5
# 记录器名称
logger.rolling.name = com.video.demo
# 设置日志级别
logger.rolling.level = debug
# 是否向上级logger传递信息
logger.rolling.additivity = true
# 关联名称为RollingFile的输出源(appender)
logger.rolling.appenderRef.rolling.ref = RollingFile
#设置SpringFramework框架的日志级别,一般业务上不需要其它使用了log4j的框架输出日志
logger.SpringFramework.name = org.springframework
logger.SpringFramework.level = INFO
#当有其它框架的也使用了log4j时,会输出相应日志,以下方式为屏蔽其它框架的日志信息(设置日志级别)
#logger.Http.name = org.apache.http
#logger.Http.level = TRACE
# 根记录器,所有记录器的父辈
rootLogger.level = debug
# 关联名称为STDOUT的输出源(appender)
rootLogger.appenderRef.stdout.ref = STDOUT
启用 SLF4J 来委派给 Log4j
依赖
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.6.2</version>
</dependency>
log4j2.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="org.springframework.beans.factory" level="DEBUG"/>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
避免公共记录
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.21.RELEASE</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
将 SLF4J 与 Log4j 或 Logback 一起使用
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.21.RELEASE</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
在 SLF4J 用户中,更常见的选择是直接绑定到Logback,该步骤使用更少的步骤并生成更少的依赖项。因为 Logback 直接实现 SLF4J,所以省去了额外的绑定步骤,因此您只需要依赖两个库,即jcl-over-slf4j和logback)
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.7</version>
</dependency>
</dependencies>