欢迎访问 生活随笔!

ag凯发k8国际

当前位置: ag凯发k8国际 > 编程资源 > 编程问答 >内容正文

编程问答

java jar log4j-ag凯发k8国际

发布时间:2024/10/8 编程问答 1 豆豆
ag凯发k8国际 收集整理的这篇文章主要介绍了 java jar log4j_使用log4j 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

前面介绍了commons logging,可以作为“日志接口”来使用。而真正的“日志实现”可以使用log4j。

log4j是一种非常流行的日志框架,最新版本是2.x。

log4j是一个组件化设计的日志系统,它的架构大致如下:

log.info("user signed in.");

│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐

├──>│ appender │───>│ filter │───>│ layout │───>│ console │

│ └──────────┘ └──────────┘ └──────────┘ └──────────┘

│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐

├──>│ appender │───>│ filter │───>│ layout │───>│ file │

│ └──────────┘ └──────────┘ └──────────┘ └──────────┘

│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐

└──>│ appender │───>│ filter │───>│ layout │───>│ socket │

└──────────┘ └──────────┘ └──────────┘ └──────────┘

当我们使用log4j输出一条日志时,log4j自动通过不同的appender把同一条日志输出到不同的目的地。例如:

console:输出到屏幕;

file:输出到文件;

socket:通过网络输出到远程计算机;

jdbc:输出到数据库

在输出日志的过程中,通过filter来过滤哪些log需要被输出,哪些log不需要被输出。例如,仅输出error级别的日志。

最后,通过layout来格式化日志信息,例如,自动添加日期、时间、方法名称等信息。

上述结构虽然复杂,但我们在实际使用的时候,并不需要关心log4j的api,而是通过配置文件来配置它。

以xml配置为例,使用log4j的时候,我们把一个log4j2.xml的文件放到classpath下就可以让log4j读取配置文件并按照我们的配置来输出日志。下面是一个配置文件的例子:

%d{mm-dd hh:mm:ss.sss} [%t] %-5level %logger{36}%n%msg%n%n

log/err.log

log/err.%i.log.gz

虽然配置log4j比较繁琐,但一旦配置完成,使用起来就非常方便。对上面的配置文件,凡是info级别的日志,会自动输出到屏幕,而error级别的日志,不但会输出到屏幕,还会同时输出到文件。并且,一旦日志文件达到指定大小(1mb),log4j就会自动切割新的日志文件,并最多保留10份。

有了配置文件还不够,因为log4j也是一个第三方库,我们需要从这里下载log4j,解压后,把以下3个jar包放到classpath中:

log4j-api-2.x.jar

log4j-core-2.x.jar

log4j-jcl-2.x.jar

因为commons logging会自动发现并使用log4j,所以,把上一节下载的commons-logging-1.2.jar也放到classpath中。

要打印日志,只需要按commons logging的写法写,不需要改动任何代码,就可以得到log4j的日志输出,类似:

03-03 12:09:45.880 [main] info com.itranswarp.learnjava.main

start process...

最佳实践

在开发阶段,始终使用commons logging接口来写入日志,并且开发阶段无需引入log4j。如果需要把日志写入文件,

只需要把正确的配置文件和log4j相关的jar包放入classpath,就可以自动把日志切换成使用log4j写入,无需修改任何代码。

练习

根据配置文件,观察log4j写入的日志文件。

小结

通过commons logging实现日志,不需要修改代码即可使用log4j;

使用log4j只需要把log4j2.xml和相关jar放入classpath;

如果要更换log4j,只需要移除log4j2.xml和相关jar;

只有扩展log4j时,才需要引用log4j的接口(例如,将日志加密写入数据库的功能,需要自己开发)。

总结

以上是ag凯发k8国际为你收集整理的java jar log4j_使用log4j的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得ag凯发k8国际网站内容还不错,欢迎将ag凯发k8国际推荐给好友。

网站地图