问题标签 [slf4j]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Servlet 中的休眠导致 NoClassDefFoundError: org/slf4j/LoggerFactory
我有一个 Java (6) 应用程序,它使用 Hibernate (V3.3.2) 从 HSQLDB 读取数据,我使用 Eclipse (V3.5.1) 构建和调试/运行它,它工作正常。
然后,我创建了一个 GWT (V1.7) Servlet Web 应用程序,将我的 hibernate 类复制到其中,并添加了相同的用户库依赖项。但是,当我运行 servlet 并尝试访问调用我的代码的 URL 时,我得到了这个:
其中 DAOSession.java:40 是:
谷歌搜索这个错误表明我在类路径中缺少 slf4j-api.jar,但是如果我查看调试属性的命令行,我可以在那里看到这个 jar:
如果我打开 jar,我可以在其中看到 LoggerFactory 类。
知道为什么类加载器找不到它吗?
Edit 1: If try to access org.slf4j.LoggerFactory from my code, Eclipse compiles it ok, but i get the same error at runtime.
Edit 2: If i add a Test class with a main which calls the same code and run it, it works. So this classpath problem seems specific to the Servlet.
thanks, jon
documentation - 回退教程
java - WebSphere App Server 中的 SLF4J 消息格式
所以,我再次用伐木头撞墙。我知道,它有多复杂?好吧,走着瞧...
我正在开始一个要在 WebSphere Application Server 6.1 上运行的新项目(实际上是 Portal Server 6.1,但它的底层是 WAS 6.1 - 无论如何)。我通常将 java.util.logging 用于我的 WAS 项目,一切都很好。这位客户是 SLF4J 的粉丝并想使用它。很公平,听起来很容易。
所以,我在我的 WEB-INF/lib 目录中部署了 slf4j-api-1.5.8.jar 和 slf4j-jdk14-1.5.8.jar 。在我的代码中,我做了一个——
正如预期的那样,我在 SystemOut.log 中获得了一个条目。但是,我无法弄清楚该消息的格式。一个样本将是——
让我解释一下该示例日志条目中的内容。我假设com.example.MyClass左侧的所有内容都来自 jul 格式化程序。它右边的所有内容都是我在 log.debug() 中包含的内容。那么,谁在添加com.example.MyClass?我唯一能想到的是 SLF4J 在将消息传递到底层 jul 之前添加它
让我恼火的是com.example.MyClass部分。我不希望它包含在 SLF4J 生成的日志消息中。类名已包含在内,因此不需要额外的绒毛。另外,真正的包名很长,包含它们只会将日志条目的真正内容推到右边太远。
当我只使用普通的 java.util.loggging 时,日志条目是完全相同的,只是不包括“com.example.MyClass”部分。正是我想要的!
所以,问题是 - 我怎样才能摆脱 WAS 下通过 SLF4J 生成的日志消息中的这个额外的类名条目?
谢谢!
java - slf4j 是否有 Java 1.5 varargs API?
我想摆脱这一切...
...并用这个替换它...
...这样我的日志记录语法就不必根据我要记录的参数数量而改变。似乎有很多讨论和工作围绕它,但它在哪里?或者我应该包装 slf4j 的包装器吗?
java - 在应用程序中为新手记录外观或记录器
我的小测试网络应用程序需要一些日志记录。我在 log4j 和 java.util.logging 方面没有真正的经验,我在想我是否应该立即开始使用日志外观 (slf4j)。
我正在阅读日志外观应该用于共享的库(框架),这是有道理的。但是,如果一个特定的应用程序我不知道该去哪里。由于性能原因,直接使用 log4j(或 logback)会更好吗?或者我应该立即从 slf4j 开始,因为我不认识其他人吗?
谢谢
java - Log4j 是否被放弃以支持 Slf4j?
似乎 log4j 有一些类加载问题(等等),在我看来,趋势是从 log4j 转向 slf4j。(Hibernate 停止使用第一个,转而使用后者)
- 这是真的吗?
- slf4j 解决的 log4j 中的主要问题是什么?
- slf4j 是最终决定还是有更好的“下一个 log4j”行业标准?
更新:
- 所以delfuego的这个回答让我很困惑,你能接受/反对吗?:
您似乎偶然发现了 log4j(和 Apache Commons Logging 库)的主要问题,即它们在使用正确的类加载器时很难发现并与之交互。这里有一个非常密集的解释,并附有示例;带回家的信息是,新的日志框架 SLF4J 的主要驱动力之一是完全消除这些问题。您可能想换掉它,看看您的生活是否变得更轻松。
- log4j 的更多类加载问题:http: //articles.qos.ch/classloader.html
java - 从 maven 禁用码头运行的日志记录
我下载了一个需要从源代码构建的大框架。该项目使用 maven 构建结构,并包含一个可以使用嵌入式码头查看的演示应用程序。Maven 插件处理所有这些东西。
但是,当我运行演示应用程序(使用 mvn jetty:run)时,我不能真正使用它,因为由于某种原因,在 DEBUG 级别上的日志记录已打开,并且应用程序大部分时间都在记录大量语句。响应能力几乎为零。
该框架(geomajas 1.5.0)似乎使用SLF4J,但我无法弄清楚它在哪里配置或在哪里可以关闭。
欢迎任何想法......谢谢!
更新: 显然他们使用 logback。我找到了配置文件 (logback.xml),我在其中编辑了 DEBUG 级别并将它们替换为 ERROR
为了确保更改能够传播,我清理了项目并重建了它。但问题依然存在!我手动查看了文件target
夹中的 logback.xml 文件,它们已经更新。但是我还是看到了日志记录!
更新 2 我在 Windows 7 顺便说一句。
java - 如何从 slf4j 关闭日志记录
它是在我们的应用服务器上生成大量日志的第三方应用程序。像这样:
如何关闭 slf4j 的输出?我查看了 .war 文件以找到 slf4j 的一些配置,但什么也没有。他们的网站也没有帮助
java - Java:可以很好地格式化日志输出的库
我找不到一个允许以比通常看到的更好的方式格式化日志输出语句的库。我记得的功能之一是它可以根据日志语句发生位置的“嵌套性”来“偏移”日志消息。
也就是说,而不是这样:
它会显示如下内容:
这是我刚刚编写的一个示例(VeryLongCamelCaseClassNamesNotMine)。但我记得看到过这种格式清晰的日志输出,它们确实比我以前见过的任何东西都好得多,而且除了更好之外,它们还更容易阅读,因为它们重现了代码的一些逻辑组织。
然而我再也找不到那个图书馆是什么了。
我很确定它与log4j或sl4j完全兼容。
java - 使用 EJB3.1 进行登录
我正在使用 logback/slf4j 来处理我的应用程序中的日志记录。在我开始使用 EJB 之前,一切都运行良好。一旦我将无状态 EJB 添加到我的应用程序中,记录器就会开始忽略我的 logback.xml 并停止使用我的附加程序。我切换到编程记录器配置以查看问题所在,现在当我尝试在 EJB 中使用记录器时出现以下错误:
org.slf4j.impl.JDK14LoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext
源于以下行:
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
是否需要任何特殊配置才能让 logback 与 EJB 一起使用?如果重要的话,我将部署在 glassfish v3 上。