springboot log4j配置xml实例说明

提供样本配置代码

java 复制代码
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!-- status log4j2内部日志级别 -->
<configuration status="INFO">
    <!-- 全局参数 -->
    <Properties>
        <Property name="springName">demo</Property>
        <Property name="pattern">
            {"time":"%d{yyyy-MM-dd HH:mm:ss.SSS}","level":"%level","service":"${springName}","class":"%C{1.}","thread":"%thread","trace":"[%X{traceId},%X{parentSpanId},%X{spanId}]","uri":"%X{URI}","device-type":"%X{DT}","source-type":"%X{ST}","uid":"%X{UID}","msg":"%msg"}%n
        </Property>
    </Properties>
    <Appenders>
        
        <RollingFile name="error" fileName="/home/logs/${springName}/err.log"
                     filePattern="/home/logs/${springName}/%d{yyyy-MM-dd}/err-%i.log" append="true">
           
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <pattern>${pattern}</pattern>
            </PatternLayout>
            <Policies>
                
                <TimeBasedTriggeringPolicy modulate="true" interval="1"/>
               
                <SizeBasedTriggeringPolicy size="30MB"/>
            </Policies>
            <DefaultRolloverStrategy>
                <Delete basePath="/home/logs/${springName}/" maxDepth="2">
                    <IfFileName glob="err-*" />
                    <IfLastModified age="15d" />
                </Delete>
            </DefaultRolloverStrategy>
            
            <DefaultRolloverStrategy max="30"/>
        </RollingFile>
       
        <RollingFile name="rollingFile" fileName="/home/logs/${springName}/demo.log"
                     filePattern="/home/logs/${springName}/%d{yyyy-MM-dd}/log-%i.log" append="true">
            <PatternLayout>
                <pattern>${pattern}</pattern>
            </PatternLayout>
            <Policies>
              
                <TimeBasedTriggeringPolicy modulate="true" interval="1"/>
                <SizeBasedTriggeringPolicy size="10MB"/>
            </Policies>
          
            <DefaultRolloverStrategy max="50"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Logger name="org.springframework" level="warn"/>
        <Logger name="com.cc" level="info"/>
        <Logger name="com.ap" level="DEBUG"/>
        <Root level="info">
            <AppenderRef ref="console"/>
            <AppenderRef ref="error"></AppenderRef>
            <AppenderRef ref="rollingFile"></AppenderRef>
        </Root>
    </Loggers>
</configuration>

``

配置说明

Log4j有三个主要的组件:

Loggers(记录器):日志类别和级别

Appenders(输出目标):日志要输出到的地方

Layouts(布局):日志以何种形式输出

Propertiess说明

Properties全局参数

可以定义springName和pattern格式,全局使用。

Loggers组件

Loggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,分别用来指定这条日志信息的重要程度,明白这一点很重要!

Log4j有一个规则:只输出级别不低于设定级别的日志信息,假设Loggers级别设定为INFO,则INFO、WARN、ERROR和FATAL级别的日志信息都会输出,而级别比INFO低的DEBUG则不会输出。

Appenders配置

禁用和使用日志请求只是Log4j的基本功能,Log4j日志系统还提供了许多强大的功能,比如允许把日志输出到不同的地方,如控制台(Console)、文件(Files)等,可以根据天数或者文件大小产生新的文件,可以以流的形式发送到其它地方等等。

java 复制代码
<Console>(控制台)
<File>(文件)
<DailyRollingFile>(每天产生一个日志文件)
<RollingFile>(文件大小到达指定尺寸的时候产生一个新的文件)
<Writer>(将日志信息以流格式发送到任意指定的地方)

ThresholdFilter指定级别

Layouts配置

Log4j可以在Appenders的后面附加Layouts来完成这个功能。

Layouts提供四种日志输出样式,如根据HTML样式、自由指定样式、包含日志级别与信息的样式和包含日志时间、线程、类别等信息的样式。

常使用的类如下:

(以HTML表格形式布局)

(可以灵活地指定布局模式)

(包含日志信息的级别和信息字符串)

(包含日志产生的时间、线程、类别等信息)

PatternLayout选项

java 复制代码
 {"time":"%d{yyyy-MM-dd HH:mm:ss.SSS}","level":"%level","service":"${springAppName}","class":"%C{1.}","thread":"%thread","trace":"[%X{traceId},%X{parentSpanId},%X{spanId}]","uri":"%X{URI}","device-type":"%X{DT}","source-type":"%X{ST}","uid":"%X{UID}","msg":"%msg"}%n

格式说明如下:

%p:输出日志信息的优先级,即DEBUG,INFO,WARN,ERROR,FATAL。

%d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,如:%d{yyyy/MM/dd HH:mm:ss,SSS}。

%r:输出自应用程序启动到输出该log信息耗费的毫秒数。

%t:输出产生该日志事件的线程名。

%l:输出日志事件的发生位置,相当于%c.%M(%F:%L)的组合,包括类全名、方法、文件名以及在代码中的行数。例如:test.TestLog4j.main(TestLog4j.java:10)。

%c:输出日志信息所属的类目,通常就是所在类的全名。

%M:输出产生日志信息的方法名。

%F:输出日志消息产生时所在的文件名称。

%L:输出代码中的行号。

%m:输出代码中指定的具体日志信息。

%n:输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"。

%x:输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像Java Servlets这样的多客户多线程的应用中。

%%:输出一个"%"字符。

另外,还可以在%与格式字符之间加上修饰符来控制其最小长度、最大长度、和文本的对齐方式。如:

%20c:指定输出category的名称,最小的长度是20,如果category的名称长度小于20的话,默认的情况下右对齐。

%-20c:"-"号表示左对齐。

%.30c:指定输出category的名称,最大的长度是30,如果category的名称长度大于30的话,就会将左边多出的字符截掉,但小于30的话也不会补空格。

Policies策略

基于时间的触发策略。 interval,integer型,指定两次封存动作之间的时间间隔。单位:以日志的命名(filePattern)精度来确定单位,比如yyyy-MM-dd-HH单位为小时,yyyy-MM-dd-HH-mm单位为分钟 modulate,boolean型,说明是否对封存时间进行调制。若modulate=true,以0为边界封存 每文件最大字节 用来指定同一个文件夹下最多有几个日志文件时开始删除最旧的,创建新的(通过max属性)。

相关推荐
李白的粉14 分钟前
基于springboot的在线教育系统
java·spring boot·毕业设计·课程设计·在线教育系统·源代码
小马爱打代码1 小时前
SpringBoot原生实现分布式MapReduce计算
spring boot·分布式·mapreduce
iuyou️1 小时前
Spring Boot知识点详解
java·spring boot·后端
一弓虽1 小时前
SpringBoot 学习
java·spring boot·后端·学习
来自星星的猫教授3 小时前
spring,spring boot, spring cloud三者区别
spring boot·spring·spring cloud
乌夷4 小时前
使用spring boot vue 上传mp4转码为dash并播放
vue.js·spring boot·dash
A阳俊yi6 小时前
Spring Boot日志配置
java·spring boot·后端
苹果酱05676 小时前
2020-06-23 暑期学习日更计划(机器学习入门之路(资源汇总)+概率论)
java·vue.js·spring boot·mysql·课程设计
斜月6 小时前
一个服务预约系统该如何设计?
spring boot·后端
Java水解7 小时前
线程池详解:在SpringBoot中的最佳实践
spring boot·后端