SSM:SSM整合log4j2日志

引入依赖

在pom.xml配置文件中添加依赖:

<!--slf4j+log4j2-->
<!--slf4j和log4j2整合时需要使用桥接包-->
<!--桥接包中引入了slf4j-api、log4j-core、log4j-api三个依赖-->
<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-slf4j-impl</artifactId>
	<version>2.14.0</version>
</dependency>

<!--<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-api</artifactId>
	<version>1.7.30</version>
</dependency>
<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-core</artifactId>
	<version>2.14.1</version>
</dependency>
<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-api</artifactId>
	<version>2.14.1</version>
</dependency>-->

因为log4j-slf4j-impl桥接包中中引入了slf4j-api、log4j-core和log4j-api,因此在pom.xml文件中可以只引入log4j-slf4j-impl桥接包。也可以在pom.xml文件中引入slf4j-api、log4j-core和log4j-api三个依赖,便于控制依赖的版本。
注意:log4j-core引入了log4j-api,因此可以只引入log4j-core。

创建log4j2.xml配置文件

spring会自动加载配置文件的规则:

  1. Log4j将搜索WEB-INF目录中“log4j2”开头的文件。如果找到多个文件,并且存在以“log4j2-name”开头的文件,其中name是Web应用程序的名称,则会使用它。否则,将使用第一个文件。
  2. 在resources目录下搜索配置文件,规则同上。

log4j2.xml文件示例

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<!--https://blog.csdn.net/qq_16498553/article/details/107778358-->
<Configuration status="info" monitorInterval="30">
    <!--全局属性-->
    <Properties>
        <Property name="APP_NAME">rczp-ssm</Property>
        <!--设置日志文件存储路径为F:/workspace/log4j/${APP_NAME}-->
        <Property name="LOG_FILE_PATH">F:/workspace/log4j/${APP_NAME}</Property>
        <!--<Property name="LOG_FILE_PATH">./logs/${APP_NAME}</Property>-->
        <!--设置日志输出格式-->
        <Property name="PATTERN_FORMAT">%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n</Property>
    </Properties>

    <!--配置输出源-->
    <Appenders>
        <!--输出到控制台-->
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="${PATTERN_FORMAT}" />
        </Console>
        <!--输出info日志到文件,filePattern旧日志另存文件名-->
        <RollingFile name="RollingInfoFile" fileName="${LOG_FILE_PATH}/info.log"
                     filePattern="${LOG_FILE_PATH}/$${date:yyyyMM}/info-%d{yyyyMMdd}-%i.log.gz">
            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
            <Filters>
                <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>

            <PatternLayout>
                <pattern>${PATTERN_FORMAT}</pattern>
            </PatternLayout>

            <Policies>
                <!-- rollover on startup, daily and when the file reaches 10 MegaBytes -->
                <!--当系统重启/日期更新/超过100M将会覆盖文件-->
                <OnStartupTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="100 MB"/>
                <TimeBasedTriggeringPolicy/>
            </Policies>
        </RollingFile>
    </Appenders>
    
    <Loggers>
        <Root level="info">
            <AppenderRef ref="applicationLog" />
            <AppenderRef ref="Console" />
            <AppenderRef ref="RollingInfoFile" />
        </Root>
    </Loggers>
</Configuration>

使用slf4j打印日志

private static final Logger log = LoggerFactory.getLogger(Test.class);

常用的是log.info()

log.info("log4j2-Info");
log.warn("log4j2-Warn");
log.error("log4j2-Error");

如果log4j2.xml配置文件在resources目录下,或者在WEB-INF目录下,那么SSM整合log4j2日志成功:
在这里插入图片描述

自定义log4j2.xml文件位置

引入依赖

使用maven工程创建的项目,在pom.xml配置文件中添加依赖:

<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-slf4j-impl</artifactId>
	<version>2.14.0</version>
</dependency>
<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-web</artifactId>
	<version>2.14.0</version>
</dependency>

注意:在log4j-web依赖中,已经依赖了log4j-core和log4j-api两个依赖,因此在pom.xml文件中引入这两个依赖即可,如果对依赖有版本要求,可以在pom.xml中引入并指定版本。请注意有没有版本冲突的问题。

创建log4j2.xml配置文件

在resources/config目录下创建log4j2.xml配置文件,文件内容与上文中的一致即可。

指定log4j2.xml文件的位置

使用log4jConfiguration参数在web.xml中指定log4j2.xml配置文件的路径。

<!-- log4j2-->
<context-param>
	<param-name>log4jConfiguration</param-name>
	<param-value>classpath:config/log4j2.xml</param-value>
</context-param>

日志输出正常:
在这里插入图片描述
如果log4j2.xml配置文件没有放在resources目录下,也没有放在WEB-INF目录下,也没有在web.xml中设置log4jConfiguration参数指定log4j2.xml文件路径。虽然项目可以正常启动,但是不会打印日志。是因为log4j2.xml配置文件没有被加载。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值