SpringBoot-log4j2日志相关配置

一、想法

      项目中要记录日志方便日后查询,而springboot内置了日志功能,由于度娘的强大,找到很多各种写法的,于是便归纳了一下,方便使用。

二、SpringBoot依赖

    创建SpringBoot项目的pom文件都会引用一个parent,进入parent会有日志的各种依赖,这时就不用自己添加依赖 如下:
image.png

三、log4j具体配置

     <?xml version="1.0" encoding="UTF-8"?><configuration>
<Properties>
    <Property name="LOG_PATTERN">
        "%highlight{[%-5p] %d %c - %m%n}{FATAL=red, ERROR=red, WARN=white, INFO=blue, DEBUG=yellow,TRACE=cyan}"
    </Property>
    <Property name="LOG_FILE_PATH">./logs</Property>
</Properties>
<appenders>
    <!-- 控制台输出 -->
    <Console name="CONSOLE" target="SYSTEM_OUT">
        <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout charset="UTF-8" pattern="${LOG_PATTERN}"/>
    </Console>
    <!-- fileName:输出路径  filePattern:命名规则 -->
    <RollingFile name="runtimeFile" fileName="${LOG_FILE_PATH}/utsapi.log"
                 filePattern="${LOG_FILE_PATH}/utsapi-%d{yyyy-MM-dd}.%i.log">
        <Filters>
            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
        </Filters>
        <!-- 输出格式 -->
        <PatternLayout charset="UTF-8" pattern="${LOG_PATTERN}"/>
        <Policies>
            <!-- SizeBasedTriggeringPolicy单个文件的大小限制 -->
            <SizeBasedTriggeringPolicy size="100KB"/>
            <!-- 每天创建一个日志文件 -->
            <!--                <TimeBasedTriggeringPolicy interval="1" />-->
        </Policies>
        <!-- DefaultRolloverStrategy同一个文件下的最大文件数 -->
        <DefaultRolloverStrategy max="2">
            <Delete basePath="${LOG_FILE_PATH}" maxDepth="2">
                <IfFileName glob="*.log"/>
                <!--age 保存天数 数字最好>2, 否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功!-->
                <IfLastModified age="3d"/>
            </Delete>
        </DefaultRolloverStrategy>
    </RollingFile>
</appenders>
<loggers>
    <!--过滤掉spring无用的debug信息-->
    <!--        <logger name="org.springframework" level="error"></logger>-->
    <root level="DEBUG">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="runtimeFile"/>
    </root>
</loggers></configuration>

注意:
basePath 定义了扫描日志文件的根门路。
maxDepth 定义了遍历的层级,1示意 bashPath 下的所有文件
IfFileName 定义了扫描的文件格式
IfLastModified 定义了只有在最初拜访工夫在3天以上的才会被删除

删除操作只会产生在日志滚动时,而滚动的机会取决于 filePattern 和 Triggering Policies (下面配置中 Policies 局部)
IfFileName 指定删除的文件格式,只有符合条件都会被删除,并没有限度是通过以后服务输入。下面这样配置是为了只删除历史日志文件。
IfFileName 和 IfLastModified 都属于 pathConditions。pathConditions 是一个数组,决定哪些文件会被删除,如果定义了多个,须要多个条件同时满足才会被删除。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容