Loading...
Apache Log2j 2 学习笔记

Apache框架笔记 2015/09/29 日志框架

log4j 1.X用了好几年了,花了点时间研究学习了一下log4j 2.X,简介记录一下学习笔记。

#使用maven构建项目,编辑pom.xml文件,首先引入dependency

<dependency>

   <groupId>org.apache.logging.log4j</groupId>

   <artifactId>log4j-api</artifactId>

   <version>2.4</version>

 </dependency>

 <dependency>

   <groupId>org.apache.logging.log4j</groupId>

   <artifactId>log4j-core</artifactId>

   <version>2.4</version>

 </dependency>

 <dependency>

   <groupId>org.apache.logging.log4j</groupId>

   <artifactId>log4j-slf4j-impl</artifactId>

   <version>2.4</version>

 </dependency>

 <dependency>

   <groupId>org.apache.logging.log4j</groupId>

   <artifactId>log4j-nosql</artifactId>

   <version>2.4</version>

 </dependency>

      <dependency>

        <groupId>org.mongodb</groupId>

        <artifactId>mongo-java-driver</artifactId>

        <version>2.12.3</version>

      </dependency>


#以下是测试好的配置文件,添加相关的注释

文件名称为:log4j2.xml,配置内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<!-- status表示log4j事件输出控制台级别,分别有"trace", "debug", "info", "warn", "error","fatal" -->

<!-- monitorInterval表示log4j会自动监听配置文件的变动,最小监听时间为5秒 -->

<Configuration status="WARN" monitorInterval="5">


   <!-- 通用属性配置 -->

  <Properties>

    <Property name="appname">imethan</Property>

  </Properties>

  

  <!-- 默认过滤等级 -->

  <ThresholdFilter level="trace"/>

  

  <Appenders>

  <!-- 控制台输出 -->

    <Console name="Console" target="SYSTEM_OUT">

      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>

    </Console>

    

    <!-- 单个文件记录 -->

    <File name="File" fileName="${appname}.log" bufferedIO="true" advertiseURI="target/output.log" advertise="false">

    <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>

    </File>

    <Appender type="File" name="File" fileName="${appname}.log">

      <Layout type="PatternLayout">

        <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>

      </Layout>

    </Appender>

    

    <!-- 每日文件记录 -->

<RollingFile name="RollingFile" fileName="logs/${appname}.log" filePattern="logs/${appname}-%d{MM-dd-yyyy}.log.gz">

      <BurstFilter level="debug" rate="16" maxBurst="100"/>

      <PatternLayout>

        <pattern>%d %p %c{1.} [%t] %m%n</pattern>

      </PatternLayout>

      <TimeBasedTriggeringPolicy />

    </RollingFile>

    

    <!-- NoSql数据库记录 -->

    <NoSql name="databaseAppender" ignoreExceptions="false">

      <MongoDb databaseName="database" collectionName="applicationLog" server="127.0.0.1"

               username="" password="" />

    </NoSql>

        

  </Appenders>

  

  <Loggers>

  <!-- 全局日志记录 -->

    <Root level="debug">

      <AppenderRef ref="Console"/>

      <AppenderRef ref="File"/>

      <AppenderRef ref="RollingFile"/>

      <AppenderRef ref="databaseAppender"/>

    </Root>

    

  <!-- 定义特定的程序的日志记录,additivity设置为flase,阻止Root再次打印 -->

  <Logger name="cn.log4j.Bar" level="debug" additivity="false">

      <AppenderRef ref="Console"/>

      <AppenderRef ref="File"/>

      <!-- 过滤输出特定的日志 -->

      <Filters>

        <MarkerFilter marker="FLOW" onMatch="ACCEPT" onMismatch="NEUTRAL"/>

        <MarkerFilter marker="EXCEPTION" onMatch="ACCEPT" onMismatch="DENY"/>

      </Filters>

    </Logger>

  </Loggers>

</Configuration>


参考:

http://logging.apache.org/log4j/2.x/





Comments