问题内容: 我们有一个weblogic批处理应用程序,它可以同时处理来自使用者的多个请求。我们使用log4j记录目的。现在,我们登录到单个日志文件以处理多个请求。调试给定请求的问题变得很麻烦,因为所有请求都将日志记录在一个文件中。 因此,计划是每个请求只有一个日志文件。使用者发送一个请求ID,必须对其进行处理。现在,实际上可能有多个使用者将请求ID发送到我们的应用程序。因此,问题是如何根据请求隔离
问题内容: 有什么方法可以手动指定Log4J 2.x 文件位置(例如在Log4J 1.x中),而又不会弄乱类路径和系统属性? 问题答案: 您可以在中使用static方法(请参见此处的源代码)。(您可以为类加载器传递null。) 请注意,此类不是公共API的一部分,因此 您的代码可能会随任何次要发行版而中断 。 为了完整起见,您还可以使用以下系统属性指定配置文件的位置:
问题内容: 我应该使用哪个过滤器来定义要使用apender记录的特定级别?例如: Java的 log4j2.xml: 文件输出很好,但是在控制台中,我得到了这样的结果: 但是我需要追加程序仅输出INFO消息,而输出所有EXEPT INFO。因此,控制台输出应如下所示: 无法找到如何防止过滤器尊重级别继承的方法。是否有可能做到这一点? 问题答案: 这有效:
问题内容: 我决定将Log4J日志记录框架用于新的Java项目。我想知道应该使用什么策略来创建/管理Logger实例,为什么? 每个类一个Logger实例,例如 } 每个线程一个Logger实例 每个应用程序一个Logger实例 水平切片:应用程序每一层(例如,视图层,控制器层和持久层)中Logger的一个实例 垂直切片:应用程序功能分区内Logger的一个实例 注意:这些文章在某种程度上已经考虑
问题内容: 我们的Web应用程序必须与PCI兼容,即,它不得存储任何信用卡号。该应用程序是大型机系统的前端,它在内部处理抄送号,并且-正如我们刚刚发现的那样- 有时仍会在其响应屏幕之一上吐出完整的抄送号。默认情况下,这些响应的全部内容都记录在调试级别,并且从这些响应解析的内容也可以记录在许多不同的位置。因此,我无法找到此类数据泄漏的根源。我必须确保CC号在我们的日志文件中被屏蔽。 正则表达式部分不
问题内容: 我正在尝试学习log4j,所以我只是尝试做一些非常简单的事情。 但是做完之后我得到了; 你知道我错了吗? 谢谢你们 问题答案: 您在类路径中缺少或。 您可以使用 但是请注意,这只会登录到System.out,因此不建议这样做。您实际上应该使用上面的文件之一,然后将其写入日志文件。 一个非常简单的例子是
问题内容: 是否可以压缩日志文件(我通过RollingFileAppender进行压缩)? 问题答案: log4j Extras 支持该功能。只需在配置中添加以下内容,文件名以 .gz 结尾即可自动压缩日志文件: 有关更多详细信息,请查看Javadoc
问题内容: 我正在使用的Web应用程序偶尔会为某些用户带来数据完整性问题。我想打开跟踪级别的日志记录,但是由于我们每秒要处理100个请求,因此每个日志记录都是不可能的。 log4j是否可以有条件地记录日志?换句话说,我希望仅在特定用户发出请求时才能获得跟踪日志。由于我事先不知道哪些用户会受到影响,因此我无法简单地临时对用户名进行硬编码。 编辑: 我想我需要更清楚一点。我可以轻松地在日志语句中添加条
问题内容: 我有一个现有的应用程序,它针对log4j进行所有日志记录。我们使用了许多其他库,它们也使用log4j或对照Commons Logging进行日志记录,而这些日志最终在我们的环境中使用log4j记录。我们的依赖项之一甚至针对slf4j记录日志,它也可以正常工作,因为它最终也可以委托给log4j。 现在,我想为一些缓存需求将ehcache添加到此应用程序。先前版本的ehcache使用com
问题内容: 有什么办法告诉log4j将其日志写入文件和控制台?谢谢,有我的财产: 问题答案: 您的root记录器定义有点混乱。请参阅log4j文档。 这是标准的Java属性文件,这意味着将行视为键=值对。您的第二行覆盖了第一行,这说明了为什么在附加程序上看不到任何内容。 您需要将两个定义合并为一个。您似乎想让消息进入控制台,消息进入文件。根记录器只能具有 一个 级别,因此您需要更改配置,以便附加程
问题内容: 我有一个普通的INFO级别应用日志。我需要的是另外记录所有错误级别的事件,以单独的错误日志。我正在使用这样的配置: 此配置仅记录错误。如果我首先放置信息级别记录器,则它将仅记录到一般附加程序,但错误记录器将无法工作。我想让他们两个都工作。 问题答案: 您需要做的是只有一个定义了INFO级别的定义,但是在您的两个追加器定义中,您需要相应地设置其阈值,例如 然后,将两个追加程序添加到记录器
问题内容: 我们使用log4j 1.2.x登录我们的产品,并希望在不久的将来迁移到log4j2.x。我们已实现的功能之一是将系统信息和其他重要参数记录在生成的每个新翻转日志文件上。在log4j 1.2.x中实现的方式是扩展了log4j类并覆盖了该方法,下面是实现的部分代码段 现在,当我们要迁移到log4j2时,我们正在寻找一种实现相同功能的新解决方案。但是,正如我看到的log4j2的源代码与旧的源
问题内容: 我知道普遍的看法是Logback>log4j。不过,log4j有什么比Logback更好的功能吗?有什么理由通过logback使用log4j?关于堆栈溢出只有60个问题的事实怎么样,所以我认为用户群要小得多? 问题答案: 看一下官方意见。log4j不再处于活跃的开发中,并且由于logback由与log4j相同的作者CekiGülcü开发,可以更正log4j开发中的一些错误,因此您可以确
问题内容: 我已经将log4jConfigLocation放在web.xml中,但是仍然收到以下警告: 我错过了什么? 问题答案: 如果这是整个log4j.properties文件,则看起来您从未真正创建过记录器。您需要这样的一行:
问题内容: 我只想在程序中记录异常的前几行。我知道,我可以执行以下操作以仅打印stacktrace的前5行: 但我宁愿使用log4j(或更精确地说,是在log4j上使用slf4j)进行日志记录。有没有办法告诉log4j它应该只打印stacktrace的前5行? 问题答案: 您可以在log4j中使用EnhancedPatternLayout来格式化堆栈跟踪。 请参阅http://logging.ap