Log4J2.3版本简单测试验证

来源:互联网 发布:红警2单位数据 编辑:程序博客网 时间:2024/06/14 08:47


Log4J2.3简介

Log4J2.3版本是老的Log4J的升级版本,修复了老版本的一些BUG,并在很多功能上进行优化和提升,增加了诸如异步等功能。具体可以参照Log4J2的apach网站说明,http://logging.apache.org/log4j/2.x/

做了个简单的例子

下载当前最新版本的Log4J2.3,然后解压。

创建Eclipse工程,并在工程classpath中增加Log4J的JAR文件,注意:只增加log4j-api-2.3.jar,log4j-core-2.3.jar两个jar文件,否则在运行测试类时,系统会报错:

     [java] Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/Logger     [java]     at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41)     [java]     at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:492)     [java]     at com.zy.antDemo.HelloWorld.main(Unknown Source)     [java] Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger     [java]     at java.net.URLClassLoader.findClass(URLClassLoader.java:381)     [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)     [java]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)     [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)     [java]     ... 3 more

主要是由于Log4J2.3目录中还存在其他jar包,Log4J认为你需要借助SLF4J来完成日志操作,因此会加载SLF4J的类。

编写测试类

import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;public class HelloWorld {public static void main(String[] args) {Logger logger = LogManager.getLogger(HelloWorld.class.getName());// TODO Auto-generated method stublogger.info("hello world");}}

执行后,控制台出现如下信息:

     [java] ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

这是由于Log4J没有找到配置文件出现的提示。需要说明的是,在新版的log4J功能中,如果程序没有提供配置文件或者Log4J没有在相应位置找到配置文件,则Log4J会使用系统缺省配置。

编写Log4J配置文件

<?xml version="1.0" encoding="UTF-8"?>  <configuration status="OFF">    <appenders>      <Console name="Console" target="SYSTEM_OUT">        <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>      </Console>    </appenders>    <loggers>      <root level="info">        <appender-ref ref="Console"/>      </root>    </loggers>  </configuration>  

放在src目录下

再次执行HelloWorld类,系统显示

     [java] 18:44:28.360 [main] INFO  com.zy.antDemo.HelloWorld - hello world

执行成功。


当然,新版Log4J还有很多功能,还需要深入研究。

为了装逼,自己编写了ant脚本执行验证过程,纯粹为了学习ant,见笑。

<?xml version="1.0" encoding="UTF-8" ?><project name="ant demo" basedir="." default="java"><description>ant demo</description><property name="srcdir" value="src"/><property name="buildDir" value="build"/><target name="setup" depends="clean"><mkdir dir="${buildDir}"/></target><target name="clean"><delete dir="${buildDir}"></delete></target><target name="copyFile"><copy  todir="${buildDir}"><fileset dir="${srcdir}"><include name="**/*.xml"/></fileset></copy></target><target name="javac" depends="setup"><javac id="compile" verbose="true" fork="true" srcdir="${srcdir}" destdir="${buildDir}"><include name="**/*.java"/><classpath><fileset dir="E:\\java\\lib\\apche\\log4j2\\apache-log4j-2.3-bin"><include name="**/log4j-api-2.3.jar"></include><include name="**/log4j-core-2.3.jar"></include></fileset></classpath></javac></target><target name="java" depends="javac,copyFile"><java fork="true" classname="com.zy.antDemo.HelloWorld"><classpath><pathelement path="${buildDir}"/><fileset dir="E:\\java\\lib\\apche\\log4j2\\apache-log4j-2.3-bin"><include name="**/log4j-api-2.3.jar"></include><include name="**/log4j-core-2.3.jar"></include></fileset></classpath></java></target></project>





0 0
原创粉丝点击