Log4J2.3版本简单测试验证



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(SLF4JLo
ggerContext.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 stub
		logger.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>





  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从码农走出来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值