log4j2日志笔记

1、日志级别,输出日志级别大于日志文件设置的级别才能输出。

OFF > Fatal > Error > Warn > Info > Debug > Trace > All

2、Appenders中子节点Console、File、RollingFile、RollingRandomAccessFile区别?

  • Console:用于输出在控制台
  • File:输出日志文件,不可设置,无限增长
  • RollingFile:输出日志文件,超过指定大小会将文件保存至文件夹中,再删除,然后新建文件
  • RollingRandomAccessFile:输出日志文件,超过指定大小会将文件保存至文件夹中,再删除,然后新建文件

3、log4j2.xml及常用属性

<?xml version="1.0" encoding="UTF-8"?>
<!--
    根节点Configuration常用的有两个属性:status和monitorinterval,
        有三个子节点:Appenders、Logger、properties。
   status:用来指定log4j2本身的打印日志的级别。
  monitorinterval:用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s。
-->
<Configuration status="Debug" monitorInterval="1800">
    <properties>
        <!--常用属性的设置-->
        <!--设置日志文件存放的路径属性-->
        <property name="LOG_HOME">D:/logs/</property>
        <property name="FILE_NAME">main</property>
    </properties>
    <Appenders>
        <!--控制台输出-->
        <!--name:用于Logger节点中root的引用-->
        <!--target:默认是SYSTEM_OUT,SYSTEM_ERR字体为红色-->
        <Console name="Console" target="SYSTEM_OUT">
            <!--输出格式,不设置默认为:%m%n.-->
            <PatternLayout>
                <Pattern>
                    %X{appname}[%X{hostname}] %X{appname}[%X{hostname}] %d{yyyy-MM-dd HH:mm:ss} [%t] %-5p [%c] : %m%n
                </Pattern>
            </PatternLayout>
        </Console>

        <!--临时日志-->
        <File name="Log" fileName="${LOG_HOME}/${FILE_NAME}-%d{yyyy-MM-dd}.log">
            <PatternLayout>
                <Pattern>
                    %X{appname}[%X{hostname}] %X{appname}[%X{hostname}] %d{yyyy-MM-dd HH:mm:ss} [%t] %-5p [%c] : %m%n
                </Pattern>
            </PatternLayout>
        </File>

        <!--自动存入按年份-月份建立的文件夹 trace级别
            filePattern:指定新建日志文件的名称格式.
        -->
        <RollingRandomAccessFile name="TraceLog" fileName="${LOG_HOME}/${FILE_NAME}_trace.log"
                                 filePattern="${LOG_HOME}/${FILE_NAME}_trace/$${date:yyyy-MM}/%d{yyyy-MM-dd}-%i.log"
                                 immediateFlush="true">
            <PatternLayout>
                <Pattern>
                    %X{appname}[%X{hostname}] %X{appname}[%X{hostname}] %d{yyyy-MM-dd HH:mm:ss} [%t] %-5p [%c] : %m%n
                </Pattern>
            </PatternLayout>
            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
            <Policies>
                <!--基于时间的滚动策略,interval属性用来指定多久滚动一次。-->
                <TimeBasedTriggeringPolicy/>
                <!--基于指定文件大小的滚动策略,size属性用来定义每个日志文件的大小。
                    超过则会创建一个文件夹保存原文件至指定目录。-->
                <SizeBasedTriggeringPolicy size="20KB"/>
            </Policies>
            <!--创建的文件夹下面有几个文件-->
            <DefaultRolloverStrategy max="100"/>
        </RollingRandomAccessFile>
        <!--自动存入按年份-月份建立的文件夹 debug级别-->
        <RollingRandomAccessFile name="DebugLog"
                                 fileName="${LOG_HOME}/${FILE_NAME}_debug.log"
                                 filePattern="${LOG_HOME}/${FILE_NAME}_debug/$${date:yyyy-MM}/%d{yyyy-MM-dd}-%i.log"
                                 immediateFlush="true">
            <PatternLayout>
                <Pattern>
                    %X{appname}[%X{hostname}] %X{appname}[%X{hostname}] %d{yyyy-MM-dd HH:mm:ss} [%t] %-5p [%c] : %m%n
                </Pattern>
            </PatternLayout>
            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <!--基于指定文件大小的滚动策略,size属性用来定义每个日志文件的大小。-->
                <SizeBasedTriggeringPolicy size="20 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="100"/>
        </RollingRandomAccessFile>
        <!--自动存入按年份-月份建立的文件夹 info级别-->
        <RollingRandomAccessFile name="InfoLog" fileName="${LOG_HOME}/${FILE_NAME}_info.log"
                                 filePattern="${LOG_HOME}/${FILE_NAME}_info/$${date:yyyy-MM}/%d{yyyy-MM-dd}-%i.log"
                                 immediateFlush="true">
            <PatternLayout>
                <Pattern>
                    %X{appname}[%X{hostname}] %X{appname}[%X{hostname}] %d{yyyy-MM-dd HH:mm:ss} [%t] %-5p [%c] : %m%n
                </Pattern>
            </PatternLayout>
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="20 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="100"/>
        </RollingRandomAccessFile>
        <!--自动存入按年份-月份建立的文件夹 warn级别-->
        <RollingRandomAccessFile name="WarnLog" fileName="${LOG_HOME}/${FILE_NAME}_warn.log"
                                 filePattern="${LOG_HOME}/${FILE_NAME}_warn/$${date:yyyy-MM}/%d{yyyy-MM-dd}-%i.log"
                                 immediateFlush="true">
            <PatternLayout>
                <Pattern>
                    %X{appname}[%X{hostname}] %X{appname}[%X{hostname}] %d{yyyy-MM-dd HH:mm:ss} [%t] %-5p [%c] : %m%n
                </Pattern>
            </PatternLayout>
            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="20 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="100"/>
        </RollingRandomAccessFile>
        <!--自动存入按年份-月份建立的文件夹  error级别-->
        <RollingRandomAccessFile name="ErrorLog" fileName="${LOG_HOME}/${FILE_NAME}_error.log"
                                 filePattern="${LOG_HOME}/${FILE_NAME}_error/$${date:yyyy-MM}/%d{yyyy-MM-dd}-%i.log"
                                 immediateFlush="true">
            <PatternLayout>
                <Pattern>
                    %X{appname}[%X{hostname}] %X{appname}[%X{hostname}] %d{yyyy-MM-dd HH:mm:ss} [%t] %-5p [%c] : %m%n
                </Pattern>
            </PatternLayout>
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="20 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="100"/>
        </RollingRandomAccessFile>
        <!--自动存入按年份-月份建立的文件夹  fatal级别-->
        <RollingRandomAccessFile name="FatalLog" fileName="${LOG_HOME}/${FILE_NAME}_fatal.log"
                                 filePattern="${LOG_HOME}/${FILE_NAME}_fatal/$${date:yyyy-MM}/%d{yyyy-MM-dd}-%i.log"
                                 immediateFlush="true">
            <PatternLayout>
                <Pattern>
                    %X{appname}[%X{hostname}] %X{appname}[%X{hostname}] %d{yyyy-MM-dd HH:mm:ss} [%t] %-5p [%c] : %m%n
                </Pattern>
            </PatternLayout>
            <ThresholdFilter level="fatal" onMatch="ACCEPT" onMismatch="DENY"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="20 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="100"/>
        </RollingRandomAccessFile>

        <!--RollingFile与RollingRandomAccessFile无区别。-->
        <RollingFile name="debug_rollingfile" fileName="${LOG_HOME}/${FILE_NAME}_debug_rollingfile.log"
                     filePattern="${LOG_HOME}/${FILE_NAME}/%d{yyyy-MM-dd}-debug_rollingfile.log">
            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <Pattern>
                    %X{appname}[%X{hostname}] %X{appname}[%X{hostname}] %d{yyyy-MM-dd HH:mm:ss} [%t] %-5p [%c] : %m%n
                </Pattern>
            </PatternLayout>
            <!-- 文件截断的条件,具体参考文档 -->
            <Policies>
                <TimeBasedTriggeringPolicy interval="24"/>
                <SizeBasedTriggeringPolicy size="20MB"/>
            </Policies>
        </RollingFile>
    </Appenders>
    </Appenders>

    <Loggers>
        <!--单独指定日志的格式,避免不必要的日志打印出来-->
        <logger name="org.springframework.core" level="INFO"/>
        <logger name="org.springframework.beans" level="INFO"/>
        <logger name="org.springframework.context" level="INFO"/>
        <logger name="org.springframework.web" level="INFO"/>
        <!--本项目中的日志级别,默认不需要设置
            level:日志的输出级别。
            additivity="false":只在自定义的Appender中进行输出。
        -->
        <logger name="com.wangyk.mybatis.main" level="all" includeLocation="true" additivity="false">
            <!--Root的子节点,用来指定该日志输出到哪个Appender。-->
            <!--与logger节点中的error比较,大于logger中的level则会输出。-->
            <appender-ref ref="Console"/>
            <appender-ref ref="TraceLog"/>
            <appender-ref ref="DebugLog"/>
            <appender-ref ref="InfoLog"/>
            <appender-ref ref="WarnLog"/>
            <appender-ref ref="ErrorLog"/>
            <appender-ref ref="FatalLog"/>
        </logger>
        <!--Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出。
            level:日志的输出级别
        -->
        <root level="all" includeLocation="true">
            <!--Appender-Ref:Root的子节点,用来指定该日志输出到哪个Appender。-->
            <appender-ref ref="Console"/>
            <appender-ref ref="TraceLog"/>
            <appender-ref ref="DebugLog"/>
            <appender-ref ref="InfoLog"/>
            <appender-ref ref="WarnLog"/>
            <appender-ref ref="ErrorLog"/>
            <appender-ref ref="FatalLog"/>

            <appender-ref ref="debug_rollingfile"/>
            <appender-ref ref="Log"/>
        </root>
    </Loggers>
</Configuration>

4.pom文件中的jar包

        <!--核心log4j2jar包-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.8.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.8.2</version>
        </dependency>
        <!--web工程-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-web</artifactId>
            <version>2.8.2</version>
        </dependency>

猜你喜欢

转载自blog.csdn.net/qq_35341771/article/details/84956419
今日推荐