问题标签 [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.

0 投票
1 回答
1293 浏览

java - 可以使用哪些日志记录来登录 GWT 共享代码?

GWT 项目中存在三种类型的代码:

  1. 客户端代码(GWT 客户端/javascript)
  2. 服务器代码(servlet 容器/java)
  3. 共享代码(GWT 客户端和 servlet 容器/javascript 和 java)

可用于每种类型的日志框架:

  1. 客户端 - gwt-log
  2. 服务器 - slf4j
  3. 共享 - ???

我想为可能包括日志记录的共享代码编写一次。

有什么解决方案吗?

0 投票
2 回答
16248 浏览

log4j - 如何在抽象类/继承中正确初始化 slf4j(使用 log4j)记录器

在我的项目中,我有一个顶级抽象类FrameProducer。我在这个级别添加了一个 slf4j 记录器,以便每个继承类都已经拥有它。这里的代码:

还有两个继承类:CameraFrameGrabberGrayscaleFilter. 然而,当方法fireEvent()被调用CameraFrameGrabberGrayscaleFilter消息被记录在FrameProducer级别时。为了清楚起见,这里是日志:

是否可以初始化记录器以FrameProducer使所有内容都记录在我的类层次结构中最专业的级别?

谢谢你的帮助。


编辑:我的 log4j.properties 看起来像这样:

0 投票
11 回答
76226 浏览

java - 为什么不建议每次都调用 LoggerFactory.getLogger(...)?

我已经阅读了大量帖子和文档(在本网站和其他地方),指出 SFL4J 日志记录的推荐模式是:

我的老板更喜欢我们只使用包装器来拦截日志调用,并避免在每个类上声明记录器的样板代码:

并像这样简单地使用它:

我认为每次我们记录时都实例化一个记录器有点昂贵,但我一直无法找到任何支持该假设的文档。此外,他说框架(我们仍在决定的 LogBack 或 Log4J)肯定会“缓存”记录器,而且在任何情况下,服务器的运行都远远低于其容量,所以这不是问题。

任何帮助指出这种方法的潜在问题?

0 投票
1 回答
3393 浏览

java - 如何让 Jetty 打印日志

我的项目在 Wicket+Spring+JPA/Hibernate 上运行。当我使用命令运行它时:

mvn jetty:run

我希望码头打印我在代码中制作的日志。例如,我实现了以下 DAO:

如何让 Jetty 将此信息实时打印到命令行窗口中?

在 pom.xml 中,我有以下依赖项:

0 投票
2 回答
35478 浏览

log4j - 使用 SLF4j/log4j 将日志存储到 .log 文件中

我正在使用 SLF4J,根据要求,我必须将日志存储到 .log 文件中。但是当我运行程序时,日志不会写入日志文件。

班级 :

log4j.properties

我可以在控制台上看到信息、警告、错误,但看不到调试值..!!

谁能帮我将日志存储到 checkLog.log 文件中。?

0 投票
2 回答
328 浏览

log4j - 将项目特定的日志信息加载到日志文件中

我正在使用 Eclipse,并且正在创建一个 Web 项目。我还使用 SLF4J 将日志存储在日志文件中。

我将log4j.properties文件放入WEB-INF/classes文件夹中。

当我访问登录页面时,所有关联的日志和我的调试语句日志都被加载到日志文件中,但我希望将特定日志(即项目特定日志)加载到日志文件中而不是其他日志中。

在日志文件中,我可以看到:

谁能帮我找出如何将特定项目相关的日志存储到日志文件中?

0 投票
2 回答
1619 浏览

spring - 在被注入的原型 bean 中获取父 bean

我想要一个像这样的 Bean 和 SubBean:

我想要实现的技巧是,SubBean 自动获取对其注入的 Bean 的引用。因为子 bean 的范围是原型,所以它将作为一个新实例注入到每个希望它被注入的父级中。

我的大想法是利用这种模式来编写一个可以注入到普通 bean 中的 LoggerBean。subbean 应该像 SLF4J Logger 一样工作。

那么有谁知道使这项工作的魔力吗?:)


编辑:我找到了使用自定义 BeanPostProcessor 执行此操作的解决方案:

这是界面:

这里有一个 Bean 使用它:

这是一个使用正常 Bean 的测试,效果很好:

但是,当将其与通过 @Configurable 注入依赖项的普通类一起使用时,测试失败:

所以这似乎让我想到了另一个问题:为什么我的自定义 BeanPostProcessor 不能在 @Configurable 类上运行?也许我毕竟不得不求助于 AspectJ ......


编辑:只是为了更新状态。毕竟我没有实现这个,因为这是过度工程......

0 投票
2 回答
1818 浏览

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:

...这行得通,所以我很确定我的罐子没问题。

有谁知道这里发生了什么?我已经尝试了所有我能想到的组合。

谢谢,阿拉斯泰尔

0 投票
1 回答
5378 浏览

java - 用 LogBack 替换 Log4j 的问题,log4j-over-slf4j.jar 的缺点

因此,我一直在移植我们的一些服务以在 log4j 上使用 Logback,并且我一直在使用 log4j-over-slf4j jar 来欺骗 log4j 以获得我们的遗留依赖项。唯一的问题是 log4j-over-slf4j 没有实现 log4j 的许多类,所以我看到一些不错的类没有发现依赖 jar 的异常。人们是如何解决这个问题的?将 nlog4j 放入类路径而不是 log4j-over-slf4j jar 就足够了吗?我还没有测试最后一个想法,但我计划明天做。

参考:

0 投票
1 回答
634 浏览

logging - log4j(或其他 Java 记录器)Appender 可以接受或访问请求上下文对象吗?

我目前正在使用 Restlet 编写 Web 服务,并在 log4j 前面使用 slf4j 进行日志记录。目前我有标准的 log4j Appenders 用于记录到文件。我试图做的还包括使用自定义 Appender 在 HTTP 响应中的日志输出。

我看到的问题是 Appender 默认无法访问正在发出的请求的上下文,这是有道理的,因为理论上请求可以在异步 Appender 开始执行之前完成。我仍然很好奇这是否可能,也许是通过使 Appender 同步并通过日志调用传递一个 Response 对象。我找不到 log4j 支持这个的方法,另一个框架会像 logback 吗?由于性能影响,我最终不一定会使用这种方法,但我仍然很好奇。

仅供参考,我当前的解决方法是自定义日志方法,它将条目添加到响应中,然后调用 slf4j 方法进行标准日志记录。这样做的缺点是必须使用自定义方法,并且我只获取我控制的代码的日志条目(我正在使用的仅使用 Appenders 的库不会被记录到响应中)