问题标签 [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 - Java 中的日志记录是怎么回事?
为什么要使用以下软件包之一而不是另一个?
- Java 日志记录
- 公共记录
- 日志4j
- SLF4j
- 回溯
java - 使用 SL4J 进行日志记录、Jakarta Commons 日志记录、第三方库的 log4j 和我自己的代码
我有一些关于日志记录的问题,更具体地说是关于设置它并确保它有效。
我正在做的项目将使用Wicket、Spring和Hibernate。我知道 Wicket 和 Hibernate 使用 Java 的 Simple Logging Facade ( SL4J ),并且 Spring 使用的是Apache Commons 的日志组件。
他们会幸福地共存吗?我想我会将log4j与 SL4J 和 Apache commons 的日志组件一起使用,你认为这是个好主意吗?
我可以将它们全部设置为将日志数据输出到一个通用文件中吗?或者我应该使用单独的文件?还是应该将日志消息存储在数据库中?(我宁愿不这样做,因为我发现对文本文件进行 grepping 等非常方便。)
对于 Spring,我想我需要某种用于 Apache Commons 日志记录组件的配置文件,以及在哪里指导它使用 log4j?
当我设置好这些后,我猜想看到一切正常,我将日志记录级别设置为 INFO,因为可以确定所有三个框架都在该模式下输出一些信息?还是有更好的方法来确定?
还有我的最后一个问题。在我开始的项目中,您是否建议我将 SL4J 用于我自己的日志记录目的?(我以为我会直接使用 log4j,但那是在我了解更多关于日志的知识之前,许多受人尊敬的库似乎选择了桥接/立面的路径来满足他们的日志记录需求。如果它让我们在没有添加的情况下获得灵活性成本没有理由不这样做。)
我期待听到更多关于您如何进行日志记录的信息。对我来说这是一个新的领域,我渴望在其中提高自己。
java - 带有 slf4j 和 log4j 的休眠 3.4
我正在尝试从 Hibernate 3.2 升级到 3.4,这显然使用了 slf4j。我们的项目目前使用 log4j。所以我的假设是我应该使用 slf4j-log4j12 包装的实现。
Maven slf4j 依赖项是:
而 log4j 依赖项是:
slf4j-log4j12 和 log4j 都引用了最新版本(我可以在 Maven 存储库中找到)。当我运行我的应用程序时,Hibernate 的日志记录失败:
我错过了什么?
编辑 1:如果我从 pom.xml 中删除 log4j 依赖项,则会收到错误消息:
编辑 2: 此博客声称问题是由带有错误版本的 slf4j-api.jar 的休眠注释引起的。
logging - 如何设置中央日志服务器并将日志事件与测试和生产分开?
我应该如何最好地设置一个中央日志记录(或者可能是 2 个,每个都专用于测试或产品)服务器,这样:
我不必担心引用任何条件的代码可能会意外地将非生产错误记录到生产错误 log4j 总线中。换句话说,我不想有这样的代码:
我不想要这个,因为它紧密耦合了诸如服务器名称之类的东西,引用它,现在代码只能在两个服务器名称之一上工作:prod 和 test。我也不能在配置中声明性地设置它,因为开发人员可能不会正确设置它并污染日志存储库。有什么建议么?
一些细节,有些不会考虑,但我还是列出了它们:
- 仅在Oracle 应用服务器10.1.3.4上运行的 Web 应用程序,以及未来的 Oracle WebLogic
- 将使用中央日志服务器,如本示例所示:http ://timarcher.com/?q=node/10 ...除了中央服务器将记录文本文件而不执行电子邮件!
- 将使用 log4j,也许它会通过 slf4j 包装(slf4j 有点不敬,所以大部分情况下忽略它..)
java - 如何将 java.util.logging 发送到 log4j?
我有一个现有的应用程序,它针对 log4j 执行所有日志记录。我们使用许多其他库,这些库要么也使用 log4j,要么针对 Commons Logging 进行日志记录,最终在我们的环境中使用 log4j。我们的依赖项之一甚至针对 slf4j 进行日志记录,这也可以正常工作,因为它最终也委托给 log4j。
现在,我想将 ehcache 添加到这个应用程序中以满足一些缓存需求。以前版本的 ehcache 使用 commons-logging,这在这种情况下可以完美运行,但是从1.6-beta1 版本开始,他们已经删除了对 commons-logging 的依赖,并将其替换为 java.util.logging。
不太熟悉 java.util.logging 提供的内置 JDK 日志记录,是否有一种简单的方法可以将发送到 JUL 的任何日志消息记录到 log4j 中,这样我就可以使用现有配置并设置任何即将到来的日志记录来自ehcache?
查看 JUL 的 javadocs,看起来我可以设置一堆环境变量来更改LogManager
使用的实现,也许可以使用它来将 log4j 包装Logger
在 JULLogger
类中。这是正确的方法吗?
具有讽刺意味的是,当(大多数)世界其他地方使用 3rd 方库时,库使用内置 JDK 日志记录会引起如此头痛。
java - Maven 没有解决 hibernate-c3p0 对 slf4j 的依赖
当我包含hibernate-c3p0
在我的 Mavenpom.xml
文件中时,我得到一个运行时NoClassDefFoundError
,因为它找不到org.slf4j.impl.StaticLoggerBinder
. 我的印象是 Maven 会解决这种依赖关系——所以如果 c3p0 需要 slf4j,那么 slf4j 将被下载并包含在内。
我的pom.xml
文件有:
java - 是否值得将日志框架包装在附加层中?
我目前正在考虑升级中型到大型 Java 代码库中的日志记录机制。当前使用Debug
类上的静态方法记录消息,我建议将其切换到 SLF4J 或 commons-logging 之类的东西。
应用程序架构师更喜欢我封装对 SLF4J 的依赖(可能通过将其包装在上述Debug
类中)。这将使将来更容易更改日志记录实现。
这对我来说似乎有点矫枉过正,因为 SLF4J 已经抽象了具体的日志记录实现。
是否值得将 SLF4J 之类的第 3 方日志抽象封装在另一个本土抽象中?
java - 如何在 JSP 中使用 SLF4J 记录器
我正在将中型应用程序的日志记录从自定义解决方案迁移到更标准的解决方案。我决定使用 Logback 和 SLF4J,并且我已经成功迁移了大部分 Java 代码。但是,我有相当多的 JSP 只是使用 System.out 进行日志记录。我从来没有过多地使用过 JSP,并开始怀疑:我应该如何在 JSP 中使用正确的日志记录?
这是首先想到的,但在几点上似乎是错误的:
- 太冗长了,需要大量的工作来转换现有的 JSP
- 每次呈现页面时都会调用 LoggerFactory.getLogger()(与
logger
标准 Java 类中的静态字段相反) - 我认为记录器的名称也不会很简单
是否有某种标准、最佳实践或登录 JSP 的任何东西?
此外,IIRC,Log4J 有某种标记库。SLF4J(或者可能是 Logback)有类似的东西吗?
java - 应该将记录器设置为什么访问级别?
我在下面使用带有 Log4J 的 SLF4J。我应该将记录器设置为哪些访问级别?