当前位置: 首页 > 知识库问答 >
问题:

Java SDK的log4j2日志记录

韩寒
2023-03-14

假设我们构建了一个JavaSDK,不同的项目可以通过将其添加为类路径中的jar或添加为mavenpom.xml或gradle文件中的依赖项来使用它。当其他项目使用该库时,SDK中的日志在运行时不可见。我尝试使用SL4J,当其他项目使用它时,没有一个日志在运行时可见。我应该用log4j2吗?如果是,我应该在我的SDK中提供log4j配置 /properties文件吗?是否会在运行时从消费者库中提取属性/配置?这方面的最佳实践是什么?你能建议一下吗?

共有1个答案

慕嘉运
2023-03-14

最佳实践#1:永远不要在jar中包含日志配置文件。

使用库的应用程序可能希望提供自己的日志记录配置。如果其中一个JAR包含不同的配置,那么这些应用程序就可以通过“有趣”的猜测游戏来找出其配置不起作用的原因。(根据类路径顺序,它们的配置有时可能优先于库中的配置,因此有时它会起作用,只是为了让它更具挑战性……)

 类似资料:
  • 我试图从log4j1更改为log4j2。我所做的: 已删除旧配置文件log4j。xml 创建了新的配置文件log4j2。xml 创建了jboss部署结构。xml 编辑的pom 环境:野蝇10 1 EAR 4 WAR文件中没有使用web.xml。以前的log4j配置日志在EAR中(仅) Log4j2配置文件 Jboss部署结构 新的maven依赖关系 我之前说过我在SLF4j中使用log4j1。这些

  • 互联网上有许多帖子建议如何从logback迁移到log4j2进行Spring引导日志记录。 参考这个sof post-Spring Boot日志与log4j2-我已经配置我的项目使用log4j2。然后我添加了一些基本的log4j2.xml和log4j2.properties文件来测试。 但是在这些更改之后,我的项目无法进行任何日志记录。有人能帮我找出毛病吗? 项目代码可在github-https:

  • 问题内容: 我正在使用log4j2。但是我面临的问题是它记录了所有日志。我想…从特定程序包登录到特定文件,而其他程序包登录到另一个文件。我正在使用log4j2.xml进行配置。请有人帮忙吗? log4j2.xml 问题答案: 刚刚回答了这个问题。 log4j2.xml 从根记录器中删除了。因此,它开始基于包记录日志。

  • 我有以下控制台附加器; 问题是我在这里使用的模式输出了一个空的ThreadContext()。我不想使用特定的密钥名称(例如,),因为系统非常广泛,密钥集也不同。示例输出: 2017-09-26 10:39:55396[main]信息:启动内部HTTP客户端{}

  • 编写了简单的POC来证明和测试Spring Boot和log4j2的兼容性。一旦成功,我将把它移动到真正的应用程序。 请参考下面的maven依赖关系(来自POC): 如果我不排除Spring的logback,也不添加boot-starter-log4j2,那么应用程序日志会打印到应用程序文件中,但Spring日志根本不会打印。我感觉到了依赖的问题。感谢任何帮助。