log4j2的基本配置和实现

jopen 9年前

Log4j 2 contains next-generation Asynchronous Loggers based on the LMAX Disruptor library. In multi-threaded scenarios Asynchronous Loggers have 18 times higher throughput and orders of magnitude lower latency than Log4j 1.x and Logback. See Asynchronous Logging Performance for details. Otherwise, Log4j 2 performs faster than Log4j 1.x in critical areas and similarly to Logback under most circumstances. See Performance for more information.

这是官网给予log4j2的高度的评价,其性能是之前的log4j的18倍,其异步性的操作更是得到了优化,对于新技术的使用和开发是我们程序员必备的知识储备,以下是自己折腾并从网络上面收集的一点小的东西:

一、不多说:网站下载log4j的新的版本,我下载的是截止目前的最新版本2.0.2
二、下载完毕以后其中有好多的jar包,但是其中的好多都是为了兼容性等存在的,初步认识的时候,只需要关注的两个jar包:

log4j-api-2.0.2.jar      log4j-core-2.0.2.jar

三、把上述的两个jar包导入我们自己的项目中,编写我们的测试用例:

package com.fww.log;  import org.apache.logging.log4j.LogManager;  import org.apache.logging.log4j.Logger;    public class LogTest  {      private static Logger log = LogManager.getLogger(LogTest.class.getName());      public static void main(String[] args)      {          log.info("你好啊");          log.debug("我是debug");          log.error("错了");          log.trace("这是什么");      }  }

四、运行程序就可以实现默认的配置信息下的log4j,但是在实际的开发中我们一定是需要自己按照项目的需求进行文件的配置操作的。以上的配置信息,只会使得error的信息输出到默认的文件中。

五、手动的进行文件的配置操作:

<properties>      <!-- 基本的文件的输出信息的配置 -->      <property name="LOG_HOME">log/test</property>      <!-- 日志备份目录 -->      <property name="BACKUP_HOME">{LOG_HOME}/backup</property>      <property name="STAT_NAME">stat</property>      <property name="SERVER_NAME">global</property>  </properties>  <appenders>      <!-- 定义控制台输出 -->      <Console name="Console" target="SYSTEM_OUT" follow="true">          <PatternLayout              pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" />      </Console>      <!-- 程序员调试日志 -->      <RollingRandomAccessFile name="DevLog"          fileName="${LOG_HOME}/${SERVER_NAME}" filePattern="${LOG_HOME}/${SERVER_NAME}.%d{yyyy-MM-dd-HH}.log">          <PatternLayout              pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" />          <Policies>              <TimeBasedTriggeringPolicy interval="1"                  modulate="true" />          </Policies>      </RollingRandomAccessFile>  </appenders>  <loggers>      <!-- 3rdparty Loggers -->      <logger name="org.springframework.core" level="info">      </logger>      <logger name="org.springframework.beans" level="info">      </logger>      <logger name="org.springframework.context" level="info">      </logger>      <logger name="org.springframework.web" level="info">      </logger>      <logger name="org.jboss.netty" level="warn">      </logger>      <logger name="org.apache.http" level="warn">      </logger>      <logger name="com.mchange.v2" level="warn">      </logger>      <!-- Root Logger -->      <root level="DEBUG">          <appender-ref ref="DevLog" />          <appender-ref ref="Console" />      </root>  </loggers>

(以上的配置信息搜集于网络)

六、在其中配置信息中,我们可以手动的进行文件位置的配置。

七、其他的说明:

log4j2相对于之前的配置信息的操作,少了properties的文件的配置操作,现在的配置文件只有json或者是xml形式的文件配置。
log4j2的配置文件的放置路径比较的随意,只要自己建立的项目工程可以把配置信息读取就可以了。