【问题标题】:Log fields/variables to file in web application将字段/变量记录到 Web 应用程序中的文件
【发布时间】:2015-11-23 13:37:36
【问题描述】:

我在我的 Web 应用程序中配置了 log4j2,它将调试/信息消息记录到控制台。我想使用记录器将每个 http 请求中收到的特定字段写入新文件。我知道将文件附加程序添加到现有的 log4j2.xml 文件会写入配置日志记录的所有日志消息,但我只想使用这个新记录器来写入特定字段。

我想滚动文件附加程序会有所帮助,它为每个请求创建一个新文件并保存作为该请求的一部分接收到的一些输入字段。

谢谢。

【问题讨论】:

  • 你能指出到底是什么仍然困扰着你吗?制作一个单独的记录器或使用哪个附加程序?要不然是啥?我对这个问题有点困惑,抱歉。
  • 我尝试添加滚动文件附加程序,但它会将所有日志消息添加到文件中。我无法弄清楚如何配置此附加程序以仅创建一个包含我想要记录的字段的文件,而不是将所有调试/信息等日志写入此文件。我可能需要两个记录器实例,一个是通用的,一个是特定的。希望这能说明问题
  • 啊,好的。是的,您需要创建另一个记录器实例。例如 Logger fieldLogger = LogManager.getLogger("FIELDLOG"); 然后您可以在配置中引用该记录器并向其添加单独的附加程序。
  • 是的..这就是我打算做的。关于如何配置 xml 为每个传入请求滚动一个新文件的任何想法,这是对控制器的休息调用。谢谢
  • @Fildor 如果您可以将其发布为答案,我会接受您之前的评论。因为这可以满足我的大部分需求,即在同一个文件中有多个记录器实例。

标签: java logging log4j2


【解决方案1】:

您可以完全控制所记录的内容。 使用记录器专门记录您需要的所有字段。 您没有专门记录的所有字段都不会被记录。

例如,以下行将仅记录 SelectedField1 和 SelectedFieldN。 不会记录应用程序中的所有其他字段。

logger.debug("SelectedField1:"+selectedField1+"SelectedFieldN:"+selectedFieldN);

【讨论】:

  • 现在假设如果同一个类有另一个日志语句,比如 logger.debug("Entered process method.. This is FYI..");我不想跳过此类消息被添加到文件中。
  • 您可以为您的 http 请求创建一个特殊的记录器。并为其使用专用文件。
  • 是的@Spyros 这就是我正在寻找的关于如何创建滚动策略的内容,以便可以在控制器方法的每个条目上创建一个新文件。在问题评论中也提到了。谢谢
  • 如果您需要,您可以使用专用文件创建专用记录器。每次登录时,都应该重新创建记录器。使用 append=false 和无限文件。
猜你喜欢
  • 2017-01-29
  • 2012-05-17
  • 1970-01-01
  • 1970-01-01
  • 2021-09-15
  • 2010-10-11
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
相关资源
最近更新 更多