log4j的使用 log4j和slf4j的使用

项目需要,否定了前期确定的使用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信息
log4j的使用 log4j和slf4j的使用
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]);//配置
这样的配置语句,是不是很方便啊!

在这里我只是很粗的大概说了一下,在今后使用到的时候看一下能记起来怎么用就达到目的了

  

爱华网本文地址 » http://www.aihuau.com/a/25101014/201060.html

更多阅读

转载 民谣和民歌的区别 民歌和民谣的区别

原文地址:民谣和民歌的区别作者:古月氏民谣和民歌的区别,在中国人看来,再简单不过。一个是抱着西方人的箱琴,用简单的和弦刷些简单的节奏,用清纯的分解和弦渲染情景,然后主歌副

Relation与relationship的区别 fairly和rather的区别

1.作名词,relation between sth. and sth.relation to sth. (人或者事物与他者之间的)关联,联系,关系。例如:The relation between time and results. 时间和成绩的关系。It shows on relation to the rainfall. 它与降雨量没有任何关系

游戏机IDSL与NDSL的区别 3ds和ndsl的区别

关于NDSL和I高考后出国留学DSL。“2015世界大学排名N”代表Ninten 申请澳洲留学条件do,任天堂;“I”加拿大读研要求这两者可以说是父与子2015世界大学排名两者可以说是父与子的关系;神游是任天堂在国内的二级代理商,但又不同于一般的二

刘邦与项羽的故事 刘邦和项羽的小故事

刘邦与项羽的故事 楚汉战争,一时强大的项羽为什么会败在刘邦手下,历史学家早有定论。但黎民百姓是怎么看的?请听流传在民间的刘邦和项羽的故事,恐怕你会得出另一个结论。据说,楚汉相争时,刘邦被项羽打得大败。刘邦在前面狼狈逃窜,项羽在后

声明:《log4j的使用 log4j和slf4j的使用》为网友分清醒分醉分享!如侵犯到您的合法权益请联系我们删除