zoukankan      html  css  js  c++  java
  • Log4j2 + Maven的配置文件示例详解

    一、配置Maven:
    pom.xml

    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <log4j2.version>2.6.2</log4j2.version>
    </properties>
    
    <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>${log4j2.version}</version>
    </dependency>
    <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>${log4j2.version}</version>
    </dependency>


    二、配置log4j.xml文件:
    将配置文件放到classpath目录下(/root/workspace/lucenedemo/src/main/resources/log4j.xml
    )。
    文件名:log4j2.xml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!-- status : 指定log4j本身的打印日志的级别.ALL< Trace < DEBUG < INFO < WARN < ERROR 
    < FATAL < OFF。 monitorInterval : 用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s. -->
    <Configuration status="WARN" monitorInterval="30">
    <Properties>
    <!-- 配置日志文件输出目录 ${sys:user.home} -->
    <Property name="LOG_HOME">/root/workspace/lucenedemo/logs</Property>
    <property name="ERROR_LOG_FILE_NAME">/root/workspace/lucenedemo/logs/error</property> 
    <property name="WARN_LOG_FILE_NAME">/root/workspace/lucenedemo/logs/warn</property>
    
    <property name="PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} [%t-%L] %-5level %logger{36} - %msg%n</property>
    </Properties>
    
    <Appenders>
    <!--这个输出控制台的配置 -->
    <Console name="Console" target="SYSTEM_OUT">
    <!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
    <ThresholdFilter level="trace" onMatch="ACCEPT"
    onMismatch="DENY" />
    <!-- 输出日志的格式 -->
    <!-- 
    %d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生产时间 
    %p : 日志输出格式 
    %c : logger的名称 
    %m : 日志内容,即 logger.info("message") 
    %n : 换行符 
    %C : Java类名 
    %L : 日志输出所在行数 
    %M : 日志输出所在方法名 
    hostName : 本地机器名 
    hostAddress : 本地ip地址 -->
    <PatternLayout 
    pattern="${PATTERN}" />
    </Console>
    
    <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用 -->
    <!--append为TRUE表示消息增加到指定文件中,false表示消息覆盖指定的文件内容,默认值是true -->
    <File name="log" fileName="logs/test.log" append="false">
    <PatternLayout 
    pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </File>
    <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,
    则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
    <RollingFile name="RollingFileInfo" fileName="${LOG_HOME}/info.log"
    filePattern="${LOG_HOME}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
    <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
    <ThresholdFilter level="info" onMatch="ACCEPT"
    onMismatch="DENY" />
    <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    <Policies>
    <!-- 基于时间的滚动策略,interval属性用来指定多久滚动一次,默认是1 hour。 modulate=true用来调整时间:比如现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am. -->
    <!-- 关键点在于 filePattern后的日期格式,以及TimeBasedTriggeringPolicy的interval,
    日期格式精确到哪一位,interval也精确到哪一个单位 -->
    <!-- log4j2的按天分日志文件 : info-%d{yyyy-MM-dd}-%i.log-->
    <TimeBasedTriggeringPolicy interval="1" modulate="true" />
    <!-- SizeBasedTriggeringPolicy:Policies子节点, 基于指定文件大小的滚动策略,size属性用来定义每个日志文件的大小. -->
    <!-- <SizeBasedTriggeringPolicy size="2 kB" /> -->
    </Policies>
    </RollingFile>
    
    <RollingFile name="RollingFileWarn" fileName="${WARN_LOG_FILE_NAME}/warn.log"
    filePattern="${WARN_LOG_FILE_NAME}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
    <ThresholdFilter level="warn" onMatch="ACCEPT"
    onMismatch="DENY" />
    <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    <Policies>
    <TimeBasedTriggeringPolicy />
    <SizeBasedTriggeringPolicy size="2 kB" />
    </Policies>
    <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
    <DefaultRolloverStrategy max="20" />
    </RollingFile>
    
    <RollingFile name="RollingFileError" fileName="${ERROR_LOG_FILE_NAME}/error.log"
    filePattern="${ERROR_LOG_FILE_NAME}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd-HH-mm}-%i.log">
    <ThresholdFilter level="error" onMatch="ACCEPT"
    onMismatch="DENY" />
    <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    <Policies>
    <!-- log4j2的按分钟 分日志文件 : warn-%d{yyyy-MM-dd-HH-mm}-%i.log-->
    <TimeBasedTriggeringPolicy interval="1" modulate="true" />
    <!-- <SizeBasedTriggeringPolicy size="10 MB" /> -->
    </Policies>
    </RollingFile>
    
    </Appenders>
    
    <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
    <Loggers>
    <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
    <logger name="org.springframework" level="INFO"></logger>
    <logger name="org.mybatis" level="INFO"></logger>
    
    <!-- 第三方日志系统 -->
    <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" />
    <logger name="org.jboss.netty" level="warn" />
    <logger name="org.apache.http" level="warn" />
    
    
    <!-- 配置日志的根节点 -->
    <root level="all">
    <appender-ref ref="Console"/>
    <appender-ref ref="RollingFileInfo"/>
    <appender-ref ref="RollingFileWarn"/>
    <appender-ref ref="RollingFileError"/>
    </root>
    
    </Loggers>
    
    </Configuration>

    三、使用示例:

    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    
    private static Logger logger_ = LogManager.getLogger(DateUtils2Joda.class);
  • 相关阅读:
    array_map()与array_shift()搭配使用 PK array_column()函数
    Educational Codeforces Round 8 D. Magic Numbers
    hdu 1171 Big Event in HDU
    hdu 2844 poj 1742 Coins
    hdu 3591 The trouble of Xiaoqian
    hdu 2079 选课时间
    hdu 2191 珍惜现在,感恩生活 多重背包入门题
    hdu 5429 Geometric Progression 高精度浮点数(java版本)
    【BZOJ】1002: [FJOI2007]轮状病毒 递推+高精度
    hdu::1002 A + B Problem II
  • 原文地址:https://www.cnblogs.com/happyday56/p/9848113.html
Copyright © 2011-2022 走看看