项目需要,否定了前期确定的使用JDK的Logging框架改用Log4J来完成日志功能,以前也使用log4j但是当时没有记录下来。现在把log4j的使用方法简单记录如下,以备日后所需。
log4j是一个Apache开源项目,其目前的最新版本为1.2,使用log4j最重要的就是它的配置文件log4j.properties,在你的项目目录下新建一个文件,命名为log4j.properties,最好是使用它的配置文件的样例文件(在它的下载安装包内有),需要配置的元素有
1.使用哪个级别来输出log信息
在程序中所需要输出的信息是分不同等级的,越高级别的信息则说明这个错误越严重,通过配置可以控制程序以那一等级输出,log4j的所有等级顺序是DEBUG< INFO < WARN < ERROR<FATAL,如果你配置你的log级别是INFO,则比INFO低的级别DEBUG便不会输出到log中(需要在程序编写过程中采用相对应的输出级别进行输出,才可以通过配置文件较好的控制)。例如在一般编程过程中都需要对程序进行调试,调试过程中需要输出一些信息来查看程序运行情况,这个级别应该是DEBUG级别的,
Logger.debug("This is debugging");
而对于程序运行过程中的异常则可以用ERROR级别的来输出,
catch(Exception e) {
Logger.error(e.printStackTrace());
}
明白了吧,就是将程序的输出情况根据其严重情况分等级,通过配置文件可以控制在哪种情况下输出哪个等级的。
首先需要配置的是log4j.rootLogger这个元素,它配置的全局输出级别,同时还会指明log的输出方式。因为log4j支持对不同包、不同类的输出级别进行控制(也就是同一个项目中,不同package的log输出级别可以不同),而如果没有设置针对某特定包的输出级别,那么该包将采用全局输出级别进行输出。例如
包a.b
包a.c
配置有log4j.rootLogger=DEBUG,则该包都会使用DEBUG级别进行输出。
对于不同包的输出级别设置是采用log4j.logger这个元素来配置,后面跟上你要配置的包名即可,如需要配置上面的a.b这个包为INFO级别的,
log4j.logger.a.b=INFO
就就可以了
2.log信息输出到哪里
通过
log4j.rootLogger=DEBUG,stdout, disk
来实现,上面我就配置了两个输出目的地,一个叫做stdout,一个叫做disk,顾名思义一个输出到控制台上,一个输出文件中。那么如何规定其输出方式呢
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
这样就指定了stdout为控制台输出方式
log4j.appender.disk=org.apache.log4j.RollingFileAppender
指定了文件输出方式,更为详细的文件配置如下
log4j.appender.disk.File=./log/test.log
log4j.appender.disk.MaxFileSize=100KB
log4j.appender.disk.MaxBackupIndex=1
3.log信息输出的格式是怎么样的
采用默认的就可以
log4j.appender.disk.layout.ConversionPattern=%d %-5p [%t] %-17c{2}(%13F:%L) %3x - %m%n
其输出了代码行数,调用方法等有用的信息。
最后,如何在程序中使用log4j呢?
其实有两步,一个是配置,另一个就是获取logger,然后就可以通过logger.info()等方法输出log信息了。
public class MyLog {
private static Logger logger =Logger.getLogger(HelloLog4j.class.getName()); //获取logger
public static void main(String[] args) {
// TODO Auto-generated methodstub
PropertyConfigurator.configure(args[0]);//配置
logger.info("hellotest"); //输出log信息
System.out.println("hellotest");
logger.debug("debuging");//输出log信息
}
}
最后还必须要提一下的就是另一个log框架
commons-logging
这也是apache的一个开源项目,但是它和其他的log框架可不一样,它的log功能的实现并不是很强大,只是最简单的基础功能,但是它的好处就是可以集合各个流行的log框架,而且对于log功能的使用更加简单方便。使用方法如下(以log4j的集成为例)
首先将log4j和commons-logging两个jar包导入工程路径,配置好log4j.properties配置文件,在程序中需要使用log的地方只需要写上下面的代码
private static Log log =LogFactory.getLog(YourClass.class);
然后便可以进行log输出了
它的配置都还在log4j.properties文件中进行,而且不需要显示的调用
PropertyConfigurator.configure(args[0]);//配置
这样的配置语句,是不是很方便啊!
在这里我只是很粗的大概说了一下,在今后使用到的时候看一下能记起来怎么用就达到目的了