springboot中log4j2的配置文件配置

前言:

项目中大部分都会使用到日志,不管是输出到控制台还是指定文件中,总会需要对应的配置我们才能正确并方便的实现我们的需求


需求

通过配置文件将日志输出到指定的位置


配置文件实现:

首先我的项目是springboot项目,使用的日志框架是log4j2,接下来话不多少,看代码(详细的解释在注释中会有体现)

<?xml version="1.0" encoding="UTF-8"?>
<!--status用来指定log4j本身的打印日志的级别-->
<Configuration status="WARN">
    <!--定义全局变量,这里的全局变量可以供此文档中所用地方使用,更是为了方便管理-->
    <properties>
        <!--定义全局日志路径名称-->
        <property name="LOG_HOME">logs/</property>
        <property name="LOG_NAME">quartz</property>
        <property name="INFO_NAME">quartz-info</property>
        <property name="WARN_NAME">quartz-warn</property>
        <property name="ERROR_NAME">quartz-error</property>
        <!--日志输出格式化-->
        <property name="log_pattern">[%p] %d{HH:mm:ss.SSS} [%t] %c{2}[%L]%m%n</property>
        <!-- 单个日志文件最大大小,单位可以是KB, MB or GB -->
        <property name="max_single_file_size">100 MB</property>
    </properties>

    <!--先定义所有的appender-->
    <Appenders>
        <!--定义输出到控制台的Appender-->
        <Console name="Console" target="SYSTEM_OUT">
            <!-- 只接受程序中Info级别的日志进行处理-->
            <ThresholdFilter level="Info" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${log_pattern}"/>
        </Console>
        <!--设置Info级别信息都输出到这个文件中,每次大小不超过指定大小,超过后自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
        <RollingRandomAccessFile name="RollingFileInfo" fileName="${LOG_HOME}/${INFO_NAME}.log"
                                 filePattern="${LOG_HOME}/${LOG_NAME}/$${date:yyyy-MM}/${INFO_NAME}-%d{yyyy-MM-dd}-%i.log">
            <!--设置输出的日志文件-->
            <PatternLayout pattern="${log_pattern}"/>
            <!--定义要输出的日志级别-->
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <!--指定当文件大于250M则新建一个文件-->
                <SizeBasedTriggeringPolicy size="${max_single_file_size}"/>
            </Policies>
        </RollingRandomAccessFile>

        <!--设置warn级别信息都输出到这个文件中,每次大小不超过指定大小,超过后自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
        <RollingRandomAccessFile name="RollingFileWarn" fileName="${LOG_HOME}/${WARN_NAME}.log"
                                 filePattern="${LOG_HOME}/${LOG_NAME}/$${date:yyyy-MM}/${WARN_NAME}-%d{yyyy-MM-dd}-%i.log">
            <!--只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
            <!--设置输出的日志文件-->
            <PatternLayout pattern="${log_pattern}"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="${max_single_file_size}"/>
            </Policies>
            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
            <DefaultRolloverStrategy max="20"/>
        </RollingRandomAccessFile>

        <!--设置error级别信息都输出到这个文件中,每次大小不超过指定大小,超过后自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
        <RollingRandomAccessFile name="RollingFileError" fileName="${LOG_HOME}/${ERROR_NAME}.log"
                                 filePattern="${LOG_HOME}/${LOG_NAME}/$${date:yyyy-MM}/${ERROR_NAME}-%d{yyyy-MM-dd}-%i.log">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            !--设置输出的日志文件-->
            <PatternLayout pattern="${log_pattern}"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="${max_single_file_size}"/>
            </Policies>
            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
            <DefaultRolloverStrategy max="20"/>
        </RollingRandomAccessFile>

    </Appenders>
    <!--定义logger,只有定义了logger并引入appender,appender才会生效,上面的那一堆日志的配置才会被使用到-->
    <Loggers>
        <!--用来指定项目的根日志-->
        <Root level="info">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="RollingFileInfo"/>
            <AppenderRef ref="RollingFileWarn"/>
            <AppenderRef ref="RollingFileError"/>
        </Root>
        <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
        <logger name="org.springframework" level="WARN"/>
        <logger name="org.mybatis" level="WARN"/>
        <logger name="config.RepositoryConfigurationDelegate" level="WARN"/>
    </Loggers>
</Configuration>
好的,您想了解关于在Spring Boot如何配置外置的Log4j2日志记录器是吗?首先,您需要在您的Maven或Gradle构建文件添加Log4j2的依赖项,并将配置文件(例如log4j2.xmllog4j2.properties)放置在您选择的位置(例如,您可以将其放置在项目根目录的config文件夹)。然后,您需要在Spring Boot应用程序的Startup类添加以下代码以使Log4j2配置生效: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.core.io.support.ResourcePatternResolver; import org.springframework.util.Assert; @SpringBootApplication public class Application { @EventListener public void handleApplicationReadyEvent(ApplicationReadyEvent event) { ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); Resource[] resources = resolver.getResources("classpath*:log4j2.xml"); Assert.isTrue(resources.length == 1, "log4j2.xml file must be present in the classpath"); System.setProperty("log4j.configurationFile", resources[0].getURI().toString()); } public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 这段代码将在应用程序启动时加载log4j2.xml配置文件,并将其设置为系统属性“log4j.configurationFile”。设置后,Log4j2将自动使用该文件配置应用程序的日志记录。此外,请确保在您的应用程序使用了log4j2的日志记录API,例如通过以下方式: ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyExampleClass { private static final Logger logger = LoggerFactory.getLogger(MyExampleClass.class); public void doSomething() { logger.debug("Hello world!"); } } ``` 希望这可以回答您的问题!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值