问题标签 [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.
log4j - 如何在抽象类/继承中正确初始化 slf4j(使用 log4j)记录器
在我的项目中,我有一个顶级抽象类FrameProducer
。我在这个级别添加了一个 slf4j 记录器,以便每个继承类都已经拥有它。这里的代码:
还有两个继承类:CameraFrameGrabber
和GrayscaleFilter
. 然而,当方法fireEvent()
被调用CameraFrameGrabber
或GrayscaleFilter
消息被记录在FrameProducer
级别时。为了清楚起见,这里是日志:
是否可以初始化记录器以FrameProducer
使所有内容都记录在我的类层次结构中最专业的级别?
谢谢你的帮助。
编辑:我的 log4j.properties 看起来像这样:
java - 为什么不建议每次都调用 LoggerFactory.getLogger(...)?
我已经阅读了大量帖子和文档(在本网站和其他地方),指出 SFL4J 日志记录的推荐模式是:
我的老板更喜欢我们只使用包装器来拦截日志调用,并避免在每个类上声明记录器的样板代码:
并像这样简单地使用它:
我认为每次我们记录时都实例化一个记录器有点昂贵,但我一直无法找到任何支持该假设的文档。此外,他说框架(我们仍在决定的 LogBack 或 Log4J)肯定会“缓存”记录器,而且在任何情况下,服务器的运行都远远低于其容量,所以这不是问题。
任何帮助指出这种方法的潜在问题?
java - 如何让 Jetty 打印日志
我的项目在 Wicket+Spring+JPA/Hibernate 上运行。当我使用命令运行它时:
mvn jetty:run
我希望码头打印我在代码中制作的日志。例如,我实现了以下 DAO:
如何让 Jetty 将此信息实时打印到命令行窗口中?
在 pom.xml 中,我有以下依赖项:
log4j - 使用 SLF4j/log4j 将日志存储到 .log 文件中
我正在使用 SLF4J,根据要求,我必须将日志存储到 .log 文件中。但是当我运行程序时,日志不会写入日志文件。
班级 :
log4j.properties
我可以在控制台上看到信息、警告、错误,但看不到调试值..!!
谁能帮我将日志存储到 checkLog.log 文件中。?
log4j - 将项目特定的日志信息加载到日志文件中
我正在使用 Eclipse,并且正在创建一个 Web 项目。我还使用 SLF4J 将日志存储在日志文件中。
我将log4j.properties
文件放入WEB-INF/classes
文件夹中。
当我访问登录页面时,所有关联的日志和我的调试语句日志都被加载到日志文件中,但我希望将特定日志(即项目特定日志)加载到日志文件中而不是其他日志中。
在日志文件中,我可以看到:
谁能帮我找出如何将特定项目相关的日志存储到日志文件中?
spring - 在被注入的原型 bean 中获取父 bean
我想要一个像这样的 Bean 和 SubBean:
我想要实现的技巧是,SubBean 自动获取对其注入的 Bean 的引用。因为子 bean 的范围是原型,所以它将作为一个新实例注入到每个希望它被注入的父级中。
我的大想法是利用这种模式来编写一个可以注入到普通 bean 中的 LoggerBean。subbean 应该像 SLF4J Logger 一样工作。
那么有谁知道使这项工作的魔力吗?:)
编辑:我找到了使用自定义 BeanPostProcessor 执行此操作的解决方案:
这是界面:
这里有一个 Bean 使用它:
这是一个使用正常 Bean 的测试,效果很好:
但是,当将其与通过 @Configurable 注入依赖项的普通类一起使用时,测试失败:
所以这似乎让我想到了另一个问题:为什么我的自定义 BeanPostProcessor 不能在 @Configurable 类上运行?也许我毕竟不得不求助于 AspectJ ......
编辑:只是为了更新状态。毕竟我没有实现这个,因为这是过度工程......
logging - Jetty6 slf4j 日志记录 - 如何让自定义日志格式化程序工作?
我正在使用带有 SLF4J 和 java 日志记录的 jetty6,并且一直在尝试添加自定义日志格式化程序,但无论我尝试什么,我似乎都无法让它工作。
我有一个格式化程序,像这样:
我想将此用作我的码头日志记录的默认值,因此我创建了一个 ${jetty.home}/resources/logging.properties 文件:
我创建了一个 jar 文件 logging.jar,其中包含 DeadSimpleFormatter 类。我把这个 jar 放到 ${jetty.home}/lib/ext 中。
我开始码头:
我可以看到正在创建的输出文件。它遵循我的属性文件中定义的限制和计数规则。但它不使用我的格式化程序 - 它恢复为默认的 XmlFormatter。我没有看到 stdout 或 stderr 有任何错误。
如果我更改 logging.properties 文件以设置格式化程序,如下所示:
...然后它工作 - 使用普通的 SimpleFormatter 写出日志文件。所以我相信我的属性没问题,我的 slfj 罐子等都是正确的。只是Jetty不喜欢我的DeadSimpleFormatter。
因为什么都没有 - 从字面上看!- 在 DeadSimpleFormatter 中,我认为这可能是一个类加载问题。我尝试像这样显式添加 jar 文件:
......但没有快乐。
我将一个 main 方法放入我的 DeadSimpleFormatter 并检查我是否可以运行 jar:
...这行得通,所以我很确定我的罐子没问题。
有谁知道这里发生了什么?我已经尝试了所有我能想到的组合。
谢谢,阿拉斯泰尔
java - 用 LogBack 替换 Log4j 的问题,log4j-over-slf4j.jar 的缺点
因此,我一直在移植我们的一些服务以在 log4j 上使用 Logback,并且我一直在使用 log4j-over-slf4j jar 来欺骗 log4j 以获得我们的遗留依赖项。唯一的问题是 log4j-over-slf4j 没有实现 log4j 的许多类,所以我看到一些不错的类没有发现依赖 jar 的异常。人们是如何解决这个问题的?将 nlog4j 放入类路径而不是 log4j-over-slf4j jar 就足够了吗?我还没有测试最后一个想法,但我计划明天做。
参考:
logging - log4j(或其他 Java 记录器)Appender 可以接受或访问请求上下文对象吗?
我目前正在使用 Restlet 编写 Web 服务,并在 log4j 前面使用 slf4j 进行日志记录。目前我有标准的 log4j Appenders 用于记录到文件。我试图做的还包括使用自定义 Appender 在 HTTP 响应中的日志输出。
我看到的问题是 Appender 默认无法访问正在发出的请求的上下文,这是有道理的,因为理论上请求可以在异步 Appender 开始执行之前完成。我仍然很好奇这是否可能,也许是通过使 Appender 同步并通过日志调用传递一个 Response 对象。我找不到 log4j 支持这个的方法,另一个框架会像 logback 吗?由于性能影响,我最终不一定会使用这种方法,但我仍然很好奇。
仅供参考,我当前的解决方法是自定义日志方法,它将条目添加到响应中,然后调用 slf4j 方法进行标准日志记录。这样做的缺点是必须使用自定义方法,并且我只获取我控制的代码的日志条目(我正在使用的仅使用 Appenders 的库不会被记录到响应中)