• log4j2


    1、记录日志:

       允许对不同日志级别的日志进行分类

      对日志的输出提供控制

      允许将日志记录到不同的输出目的地,如文件、控制台和数据库

      可以使用配置文件在运行时设置日志记录

    2、组成部分:

      1、Logger:这是一个类,它帮忙记录不同日志级别的信息

      2、Appenders:Appenders是对象,它帮助Logger对象将日志写入不同的输出目的地。Appenders可以指定一个文件、控制台后数据库作为输出位置。

      3、Layouts:Layout类帮助我们定义如何再输出终端显示日志信息

    3、api下载及管理

    <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.3</version>
    </dependency>
    <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.9.1</version>
    </dependency>

    4、配置顺序优先级
      1、Log4j将检查配置文件路径的系统属性文件:Log4j.configurationFile.如果没有定义系统属性文件,则配置顺序优先级如下:
        Property ConfigurationFactory将在classpath中查找log4j2-test.Properties配置文件
        YAML ConfigurationFactory将在classpath中查找log4j2-test.yaml和log4j2-test.yml配置文件
        JSON ConfigurationFactory将在classpath中查找log4j-test.jsn和log4j2-test.json配置文件
        XML ConfigurationFactory将在classpath中查找log4j-test.xml配置文件
        Property ConfigurationFactory将在classpath中查找log4j2.properities配置文件
        YAML ConfigurationFactory将在classpath中查找log4j2.yml和log4j2.yaml配置文件
        JSON ConfigurationFactory将在classpath中查找log4j2.jsn和log4j2.json配置文件
        XML ConfigurationFactory将在classpath中查找log4j2.xml配置文件
        如果没有提供任何配置文件,默认配置将会生效产生如下行为:
          将使用Root Logger设为ERROR,将日志消息打印到控制台,样式采用%d{HH:mm:ss.sss}[%t]%-5level%logger{36}-%msg%n
        日志级别:ALL/TRACE/DEBUG/INFO/WARN/ERROR/FATAL

    5、定义log4j2.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
    <log4j:configuration>
        <!--输出到控制台-->
        <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
            <param name="Threshold" value="DEBUG"/>
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            </layout>
        </appender>
    
        <!--输出到文件(info)-->
        <!--将生成“info.log.2014-06-11”这样的日志文件-->
        <appender name="fileAppenderInfo" class="org.apache.log4j.DailyRollingFileAppender">
            <!--<param name="File" value="${user.home}/logs/website/info.log" />-->
            <param name="File" value="default1.log"/>
            <param name="DatePattern" value=".yyyy-MM-dd" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            </layout>
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <param name="LevelMin" value="INFO" />
                <param name="LevelMax" value="INFO" />
            </filter>
        </appender>
    
        <!--输出到文件(warn)-->
        <appender name="fileAppenderWarn" class="org.apache.log4j.DailyRollingFileAppender">
            <param name="File" value="${user.home}/logs/website/warn.log" />
            <param name="DatePattern" value=".yyyy-MM-dd" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            </layout>
    
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <param name="LevelMin" value="WARN" />
                <param name="LevelMax" value="WARN" />
            </filter>
        </appender>
    
        <!--输出到文件(error)-->
        <appender name="fileAppenderError" class="org.apache.log4j.DailyRollingFileAppender">
            <param name="File" value="${user.home}/logs/website/error.log" />
            <param name="DatePattern" value=".yyyy-MM-dd" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            </layout>
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <param name="LevelMin" value="ERROR" />
                <param name="LevelMax" value="ERROR" />
            </filter>
        </appender>
    
        <!--屏蔽所有org.springframework.*输出的Debug(及以下)信息-->
        <logger name="log4jtutorial.LoggingDemo">
            <level value="INFO"></level>
        </logger>
    
        <root>
            <level value="ALL"/>
            <appender-ref ref="consoleAppender" />
            <appender-ref ref="fileAppenderInfo" />
            <appender-ref ref="fileAppenderWarn" />
            <appender-ref ref="fileAppenderError" />
        </root>
    </log4j:configuration>
    View Code

    6、定义log4j.properties
    log4j.rootLogger=INFO,R,stdout
    
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
    
    log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.R.File=default.log
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
    
    log4j.logger.java.sql.Connection=INFO
    log4j.logger.java.sql.Statement=INFO
    log4j.logger.java.sql.PreparedStatement=INFO
    log4j.logger.java.sql.ResultSet=INFO
    View Code


      

  • 相关阅读:
    Java 进程占用内存过多,幕后元凶原来是线程太多
    领域驱动设计系列文章(3)——有选择性的使用领域驱动设计
    领域驱动设计系列文章(1)——通过现实例子显示领域驱动设计的威力
    RabbitMQ
    Redis与Memcached的区别
    memcached源码分析-----slab内存分配器
    C# Finalize和Dispose的区别
    [IoC容器Unity]第四回:使用范例
    [IoC容器Unity]第三回:依赖注入
    [IoC容器Unity]第二回:Lifetime Managers生命周期
  • 原文地址:https://www.cnblogs.com/wangkc/p/10837925.html
Copyright © 2020-2023  润新知