JDK Logging
由jdk提供的日志打印类:java.util.logging.Logger
配置需要启动时指定,所以用的很少:-Djava.util.logging.config.file=<config-file-name>Commons Logging
由apache提供的第三方日志库接口,他可以挂接不同的日志系统,并通过配置文件指定挂接哪个日志系统。
默认情况下,Commons Logging会自动搜索并使用Log4j,如果没有则使用JDK Logging。Log4j
Log4j是一种具体实现。
Appender -> Filter -> Layout -> socket。
log4j2.xml 放在classpath即可让Log4j读取配置。
在使用时,不直接应用Log4j的类,而是通过Commons Logging作为接口(外观/门面模式)SLF4J 和 Logback
slf4j相当于 commons Logging作为日志接口,Logback类似log4j是一种日志实现。
slf4j可以使用{}占位符打印日志,且性能做了优化。
logback.xml 方在classpath中即可让logback读取配置。log4j-over-slf4j
使用 log4j-over-slf4j 替代log4j,这样log4j接口数据的日志就会通过log4j-over-slf4j路由到slf4j上,这样即使引入的三方库使用log4j打印日志,也会被统一到系统的slf4j日志中。
log4j-over-slf4j包按log4j包实现了其中的各个类,这样替换后可以保证编译不出错。但内部代码则是代理到了slf4j接口。slf4j-log4j12
slf4j是门面,log4j是具体实现,但log4j并不是slf4j的原生实现,所以需要一层进行桥接。(logback是slf4j的原生实现,所以不需要这种包)。
如果系统中同时出现slf4j-log4j12和log4j-over-slf4j就会形成循环调用导致stackoverflow。
相同的还有(jcl-over-slf4j和slf4j-jcl)
java日志体系
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...