推荐使用SLF4J(Simple Logging Facade for Java)作为日志的api,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。
1、Slf4j优势
与使用apache commons-logging或直接使用log4j相比,SLF4J提供了一个名为参数化日志的高级特性,可以显著提高在配置为关闭日志的情况下的日志语句性能,
log.debug("Found {} records matching filter: '{}'", records, filter);//slf4j
log.debug("Found " + records + " records matching filter: '" + filter + "'");//log4j
可以看出SLF4J的优点有:更简略易读;在日志级别不够时,少了字符串拼接的开销,不会调用对象(records/filter)的toString方法。
Slf4j在1.6.0之后,更是支持了异常堆栈的打印,作为最后一个参数传入即可,基本满足了日志的常见打印场景。
log.error("Failed to format {}", s, e);
2、注意Logger间的继承关系
logger的继承是通过命名来实现的。
子logger会默认继承父logger的appender,将它们加入到自己的Appender中;除非加上了additivity="false",则不再继承父logger的appender。
子logger只在自己未定义输出级别的情况下,才会继承父logger的输出级别。
以上这篇slf4j与log4j全面了解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
主要内容:SLF4J 与 Log4j 的区别,为什么 SLF4J 优于 Log4J?SLF4J 与 Log4j 的区别 SLF4J(Simple Logging Façade for java)是一个 API,旨在提供对许多日志框架的通用访问,log4j 就是其中之一。 它基本上是一个抽象层。它不是日志记录实现。这意味着如果您正在编写一个库并且您使用 SLF4J,您可以将该库提供给其他人使用,他们可以选择与 SLF4J 一起使用的日志记录实现,例如 log4j 或 Java 日志
我有一个用Maven构建的RESTJava应用程序。它由一个包含两个模块的项目组成: myapp_server(父项目) myapp_rest myapp_logging 这是父POM: 这是的POM(使用dropwizard中的java简单原型创建): 这是的 POM: 我想让所有日志都通过,以便使用进行日志记录。删除向导在内部使用日志,所以我试图让它使用slf4j。 如果我运行这个项目,我会得
问题内容: 看来log4j存在一些类加载问题(其中包括其他问题),在我看来,趋势是从log4j转向slf4j。(Hibernate停止使用第一个来支持后者) 是真的吗 slf4j解决的log4j主要问题是什么? slf4j是硬道理还是有更好的“下一个下一个log4j”行业标准? 更新: 因此,delfuego的这个答案使我感到困惑,您可以接受/反对吗?: 您似乎偶然发现了log4j(和Apache
我收到了一个由另一个开发人员完成的项目(我现在无法与他取得联系)。在该项目中,slf4j用于日志记录。但是我在类路径中看到log4j-1.2.17.jar以及logback-access-1.0.9.jar、logback-classic-1.0.9.jar、logback-core-1.0.9.jar。此外,和文件都在参考资料中。现在我很困惑实际使用的是哪个实现。有人能提出什么建议吗? 类路径中
主要内容:SLF4J和Log4j比较log4j是一个用Java编写的可靠,快速和灵活的日志框架(API),它是在Apache软件许可下发布的。 log4j可在运行时通过外部配置文件进行高度配置。它根据优先级来查看日志记录过程,并提供将日志记录定向到各种目标的机制,例如:数据库,文件,控制台,UNIX Syslog等(有关log4j的更多详细信息,请参阅Log4j教程)。 SLF4J和Log4j比较 与log4j不同,SLF4J(代表
本文向大家介绍log4j与slf4j的使用与区别详解,包括了log4j与slf4j的使用与区别详解的使用技巧和注意事项,需要的朋友参考一下 学习目标 (1)Junit 针对方法 (2)log4j与sl4j (3)Spring - IOC log4j的介绍 (1)什么是log4j? Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件等 (2)