Questions tagged «slf4j»

Java的简单日志记录外观(SLF4J)充当各种日志记录框架的简单外观或抽象层。如果您尝试为应用程序配置日志记录,还请提供您正在使用的实际日志记录框架的标记。

30
SLF4J:无法加载类“ org.slf4j.impl.StaticLoggerBinder”
我的应用程序将同时部署在tcServer和WebSphere 6.1上。此应用程序使用ehCache,因此需要slf4j作为依赖项。结果,我将slf4j-api.jar(1.6)jar添加到了我的war文件包中。 该应用程序在tcServer中工作正常,但以下错误除外: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 但是,当我在WebSphere中部署时,会得到一个java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinder。 还伴随着 Failed to load class "org.slf4j.impl.StaticMDCBinder" 我已经检查了两个应用程序服务器的类路径,没有其他的slf4j jar。 有谁知道这里可能会发生什么?
619 java  websphere  slf4j 

5
为什么不使用java.util.logging?
我有生以来第一次发现自己正在写一个将开源的Java API。希望将其包含在许多其他项目中。 对于日志记录,我(实际上是与我一起工作的人)一直使用JUL(java.util.logging),并且从未遇到过任何问题。但是,现在我需要更详细地了解我应该为API开发做什么。我对此进行了一些研究,并根据所获得的信息感到更加困惑。因此,这个职位。 由于我来自七月,所以我对此有偏见。我对其余的知识并不多。 通过研究,我得出了人们不喜欢JUL的这些原因: “我很早在Sun发布JUL之前就开始使用Java进行开发,对于我而言,继续使用logging-framework-X而不是学习新知识变得更加容易”。嗯 我不是在开玩笑,这实际上是人们所说的。有了这个论点,我们所有人都可以做COBOL。(但是我当然可以认为自己是个懒惰的家伙) “我不喜欢JUL中的日志记录级别的名称”。好的,认真的说,这还不足以引入新的依赖关系。 “我不喜欢JUL输出的标准格式”。嗯 这只是配置。您甚至不必执行任何代码明智的事情。(是的,过去,您可能必须创建自己的Formatter类才能正确使用它)。 “我使用了其他也使用logging-framework-X的库,因此我认为仅使用该库就更容易了”。这是一个循环的论证,不是吗?为什么“每个人”都使用logging-framework-X而不使用JUL? “其他人都在使用logging-framework-X”。对我来说,这只是上述情况的特例。多数并不总是正确的。 因此,真正的大问题是为什么不选择JUL?。我错过了什么?记录正面(SLF4J,JCL)的理由是,历史上已经存在多种记录实现,其原因确实可以追溯到我看到的JUL之前的时代。如果JUL是完美的,那么将不会存在伐木外观,还是什么?使事情更加混乱的是,JUL在某种程度上是一种外观,它允许交换Handlers,Formatters甚至LogManager。 而不是采用多种方式做同一件事(记录),我们是否应该首先质疑为什么必须这样做?(并查看这些原因是否仍然存在) 好的,到目前为止,我的研究已经发现了一些可能是JUL 真正问题的东西: 表现。有人说SLF4J的性能优于其他产品。在我看来,这似乎是过早优化的一种情况。如果您需要每秒记录数百兆字节,那么我不确定您是否走在正确的道路上。JUL也已经发展,您在Java 1.4上进行的测试可能不再正确。您可以在此处阅读有关此内容的信息,此修复程序已将其纳入Java7。许多人还谈到了日志记录方法中字符串连接的开销。但是,基于模板的日志记录避免了这种成本,并且它在JUL中也存在。我个人从来没有真正写过基于模板的日志记录。太懒了。例如,如果我使用JUL执行此操作: log.finest("Lookup request from username=" + username + ", valueX=" + valueX + ", valueY=" + valueY)); 我的IDE会警告我,并请求允许将其更改为: log.log(Level.FINEST, "Lookup request from username={0}, valueX={1}, valueY={2}", new Object[]{username, valueX, valueY}); ..我当然会接受。许可授予 !感谢您的帮助。 因此,我实际上并不是自己编写此类语句,而是由IDE完成的。 总之,在性能问题上,我没有发现任何暗示JUL的性能与竞争对手相比不佳的信息。 …
351 java  logging  slf4j  logback 

2
slf4j:如何记录格式化的消息,对象数组,异常
记录填充的消息和异常的堆栈跟踪的正确方法是什么? logger.error( "\ncontext info one two three: {} {} {}\n", new Object[] {"1", "2", "3"}, new Exception("something went wrong")); 我想产生类似于以下的输出: context info one two three: 1 2 3 java.lang.Exception: something went wrong stacktrace 0 stacktrace 1 stacktrace ... slf4j版本1.6.1
274 java  exception  logging  slf4j 

14
SLF4J:类路径包含多个SLF4J绑定
我收到以下错误。似乎有多个日志框架绑定到sl4j。不确定如何解决此问题。任何帮助是极大的赞赏。 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/C:/Users/admin/.m2/repository/org/slf4j/slf4j-log4j12/1.6.4/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/C:/Users/admin/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
206 maven-2  slf4j 

4
以编程方式配置Log4j记录器
我正在尝试log4j第一次使用SLF4J(带绑定)。 我想配置3个不同的命名Logger,它们可以由LoggerFactory返回,LoggerFactory将记录不同的级别并将消息推送到不同的附加程序: 记录器1“ FileLogger”记录调试并附加到 DailyRollingFileAppender 记录器2“ TracingLogger”记录TRACE +并附加到 JmsAppender 记录器3“ ErrorLogger”记录ERROR +并追加到其他记录器 JmsAppender 此外,我希望以编程方式配置它们(使用Java,而不是XML或log4j.properties文件)。 我想通常,我会Logger在一些自举代码中的某处(如init()方法)定义这些。但是,因为我想使用slf4j-log4j,所以对于在哪里定义记录器并使它们可用于类路径感到困惑。 我不认为这违反了SLF4J的基本目的(作为外观),因为我使用SLF4J API的代码永远不会知道这些记录器存在。我的代码只是对SLF4J API进行了常规调用,然后将它们转发到它在类路径中找到的log4j Logger。 但是,如何在Java中的类路径上配置这些log4j Logger?
189 java  logging  log4j  slf4j 


3
重新登录以将不同的消息记录到两个文件
我正在使用logback / slf4j进行日志记录。我想解析我的日志文件以分析一些数据,所以我不想解析一个很大的大文件(主要由调试语句组成),而是要有两个记录器实例,每个实例都记录到一个单独的文件中。一种用于分析,另一种用于通用日志记录。有谁知道使用Logback或任何其他记录器可以做到这一点吗?
146 java  logging  logback  slf4j 

8
如何在线程池中使用MDC?
在我们的软件中,我们广泛使用MDC来跟踪Web请求的内容,例如会话ID和用户名。在原始线程中运行时,这可以正常工作。但是,有很多事情需要在后台处理。为此,我们使用java.concurrent.ThreadPoolExecutor和java.util.Timer类以及一些自卷式异步执行服务。所有这些服务都管理自己的线程池。 这是Logback手册关于在这样的环境中使用MDC的内容: 映射的诊断上下文的副本不能始终由工作线程从发起线程继承。当java.util.concurrent.Executors用于线程管理时,就是这种情况。例如,newCachedThreadPool方法创建ThreadPoolExecutor,并且像其他线程池代码一样,它具有复杂的线程创建逻辑。 在这种情况下,建议在将任务提交给执行者之前,在原始(主)线程上调用MDC.getCopyOfContextMap()。当任务运行时,作为第一个动作,它应调用MDC.setContextMapValues()将原始MDC值的存储副本与新的Executor托管线程相关联。 这样做很好,但是忘记添加这些呼叫非常容易,并且直到太晚之前,都没有简便的方法来识别问题。使用Log4j的唯一迹象是您在日志中丢失了MDC信息,而使用Logback则获得了陈旧的MDC信息(因为胎面池中的线程从其上运行的第一个任务继承了其MDC)。两者都是生产系统中的严重问题。 我认为我们的处境没有任何特别之处,但是我在网络上找不到太多有关此问题的信息。显然,这不是很多人反对的事情,因此必须有一种避免的方法。我们在这里做错了什么?
146 java  logging  slf4j  logback  mdc 

4
在SLF4J / Logback中使用标记的最佳实践
我们在项目中使用SLF4J + Logback组合已经有一段时间了,对此感到很满意,但是我们的日志记录策略非常简单,使用基于类的简单记录器,没有像MDC或Markers这样的奇特的东西。 我想知道的是,社区中是否有人真的使用了这些功能,以及它们如何用于改善日志记录/过滤功能。 我对在哪里,为什么以及如何使用[1]标记进行记录特别感兴趣。它们使我感到惊奇,因为它是将语义上下文添加到日志记录中的一种非常简洁的功能-例如,当一类可能正在处理多个问题时,可以使用特定于任务/关注点的标记来区分日志语句。 在日志记录中创建和使用标记的最佳实践,惯例或策略可能是什么。 更新:我想,我所真正追求的是没有那么多,为什么要使用标记,而是如何的一部分-有命名标志的一些好的做法(例如,使用用空格或破折号/下划线/标点符号分隔的关键字样式名称纯文本),如果有某种“标准名称”池,则根据业务功能命名内容。我可能可以为自己解决一些问题,但是如果我想系统地使用这些功能并将其介绍给一组开发人员,则有一套可形式化的指导原则是有道理的... [1] -通过询问如何使用标记,我并不是在问如何使用API​​(这确实很简单)-我指的是更一般的水平,即如何设置一致地使用标记进行日志记录
127 java  logging  slf4j  logback  markers 

8
用Java登录怎么办?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 为什么一个将使用以下软件包之一而不是另一个? Java记录 共用记录 Log4j SLF4j 退回
117 java  logging  log4j  logback  slf4j 

10
SLF4J:无法加载类“ org.slf4j.impl.StaticLoggerBinder”。错误
关于Eclipse IDE(Indigo,Juno和Kepler(32和64位版本)) 平台:Windows,Ubuntu,Mac M2E版本:1.1.0.20120530-0009,1.2.0.20120903-1050,1.3.0.20130129-0926, 1.4.0.20130601-0317 基本信息 将m2e更新到1.1版后,发生了上述错误。通过删除m2e 1.1并回滚到m2e 1.0,一切正常。我试图在Windows和Ubuntu中重复该问题,但它给了我完全相同的错误。测试了slf4j-api和logback的许多配置,但似乎没有任何效果。 即使未声明slf4j依赖关系,该错误也会出现在任何Maven项目中。 新的Maven项目-> maven-archetype-quickstart 和 New Maven Project->没有原型选择的简单项目 结果到 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 测试环境和配置 已在Mac上使用Eclipse Indigo和Eclipse Juno(分别为32位和64位),在Ubuntu上为32位以及在Windows上为64位和32位进行了测试。测试了Juno Classic,Juno建模工具,Kepler Standard,Kepler建模工具的新安装,并且产生了相同的错误。 错误显示为clean,install,test,deploy,generate-sources,validate,compile,package,integration-test,verify以及目标clean和其余目标的组合。它也与-e和-X参数一起出现。试图删除m2e存储库并从头下载它,但再次失败。我应该提到的是,在上述所有系统的3个不同机器和虚拟盒中对其进行了测试,但产生了相同的错误。 尝试解决slf4j-api和logback-core依赖性的所有不同的logback配置(从1.0.4到1.0.13),但是都产生相同的错误: <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version></version> </dependency> 尝试了所有不同的(从1.6.1到1.7.5)slf4j-simple配置。 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version></version> <scope>compile</scope> </dependency> 尝试了所有不同的配置(从1.6.1到1.7.5)log4j-over-slf4j。 <dependency> <groupId>org.slf4j</groupId> <artifactId>log4j-over-slf4j</artifactId> <version></version> <scope>compile</scope> </dependency> …

11
如何在Hibernate 4中配置日志记录以使用SLF4J
使用Hibernate 3.x slf4j用于记录。Hibernate 4.x的用途jboss日志。我正在编写一个使用Hibernate 4和SLF4J进行日志记录的独立应用程序。 如何配置Hibernate登录到SLF4J? 如果那不可能,那么我该如何配置Hibernate的日志记录呢? Hibernate 4.1手册中有关日志记录的部分以警告为“ ...”开始。 完全过时了。Hibernate从4.0开始使用JBoss Logging。当我们将这些内容迁移到《开发人员指南》时,将对此进行记录。 ...继续谈论SLF4J,因此毫无用处。入门指南和开发人员指南都没有谈论日志。迁移指南也没有。 我一直在寻找有关jboss-logging本身的文档,但是我根本找不到任何文档。在GitHub的页面是沉默的,和JBoss的社区项目页面甚至没有清单的jboss-记录。我想知道项目的Bug跟踪程序是否可能与提供文档有关,但没有。 好消息是,在应用程序服务器(例如JBoss AS7)中使用Hibernate 4时,日志记录在很大程度上由您处理。但是如何在独立应用程序中配置它?

1
slf4j和log4j2一起使用是否值得
我无法决定是否将slf4j与log4j2一起使用。根据在线帖子,看起来它不会对性能产生任何影响,但这确实是必需的。 同样,以下几点有利于log4j2: SLF4J强制您的应用程序记录字符串。如果要记录文本,Log4j 2 API支持记录任何CharSequence,还支持按原样记录任何对象。 Log4j 2 API提供了对记录消息对象,Java 8 lambda表达式和无垃圾记录的支持(它在记录CharSequence对象时避免创建vararg数组并避免创建String)。
114 java  logging  log4j  slf4j  log4j2 

23
使用Lombok的@ Slf4j和Intellij构建:找不到符号日志
我有一个从命令行构建没有问题的Maven项目。但是,当我使用IntelliJ构建它时,出现错误: java: FileName.java:89: cannot find symbol symbol : variable log 在Java文件中没有定义或导入日志,但是有一个 @Slf4j final public class FileName { 类主体之前的语句,应定义日志类。 在项目结构窗口中,用于以下类的类: Maven: org.slf4j:jcl-over-slf4j:1.6.1 Maven: org.slf4j:slf4j-api:1.6.6 Maven: org.slf4j:slf4j-log4j12:1.6.6 Maven: org.slf4j:slf4j-simple:1.6.6 在库下列出,并指示已下载并可用。 是否知道为什么会通过命令行而不是通过IntelliJ使用maven构建它,以及如何解决此问题?

1
Java Logging框架中的标记是什么?使用它们的原因是什么?
第一次阅读时我听说标记: http://slf4j.org/faq.html 我检查Logger对象的可用方法: http://www.slf4j.org/api/org/slf4j/Logger.html http://logging.apache.org/log4j/2.x/log4j-api/apidocs/org/apache/logging/log4j/Logger.html 并找到接口: http://www.slf4j.org/api/org/slf4j/Marker.html http://logging.apache.org/log4j/2.x/log4j-api/apidocs/org/apache/logging/log4j/Marker.html 我可以从以下获得更深入的信息: http://logback.qos.ch/manual/filters.html 但是仍然很困惑...请注意,我问为什么,而不是如何使用它们,所以这不是重复的: 在SLF4J / Logback中使用标记的最佳实践 UPDATE似乎当您使用标记时,您还需要编写自定义Java代码,而不是在XML或.property文件中进行配置... 更新2来自http://logback.qos.ch/manual/appenders.html#OnMarkerEvaluator Marker notifyAdmin = MarkerFactory.getMarker("NOTIFY_ADMIN"); logger.error(notifyAdmin, "This is a serious an error requiring the admin's attention", new Exception("Just testing"));
110 java  logging  log4j  slf4j  logback 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.