当前位置: 首页 > 面试题库 >

Log4j dailyrollingfileappender文件问题

堵宪
2023-03-14
问题内容

我们遇到一个特殊的问题。场景:我们有3台服务器,这些服务器具有组件的多个实例,都将事务日志写入单个日志文件中。我们使用log4j,并且这些服务器以Java
1.3运行。setAppend()传递为true,实现为DailyRollingFileAppender

问题:午夜时分,我们希望当前的日志文件以新文件名翻转并开始写入新文件。在我们的测试设置(单个服务器写入日志)中,此方法运行良好。在生产中,在午夜时分会创建新文件,在该文件中将写入新日志,但将删除翻转文件

几天之内,我们将为您提供任何帮助,我们将不胜感激。


问题答案:

不应
从许多进程登录到同一文件。Log4j是线程安全的,但是,如果我可以这样说,它不是进程安全的。它不能用作不同Java进程之间的共享库。嵌入在一个Java应用程序中的Log4j不了解其他任何Java应用程序。

使用翻转会导致您刚刚发现的问题:所有进程都运行自己的翻转代码,盲目地覆盖以前的内容(因为它们都不希望有任何内容)。

此处可能的解决方案:Log4j记录到共享日志文件



 类似资料:
  • 在edge中,我正在访问一个JSP页面,该页面会返回一个文件。它在chrome中工作得很好,但在Edge和Internetexplorer中,我会将mime类型附加到文件名中。 这是响应标头: Edge要求我保存文件,文件名是 persistenceIDs.xlsx.vnd.openxmlformats-officedocument.spreadsheetml.sheet 有什么想法吗?

  • 问题内容: 搜寻了几个小时后,就开始对此完全取笑。我还在网站上看到了该问题的各种变体,但似乎无法使其正常工作。JFrame需要从ini文件中读取数据,并且我已经创建了一种打开该文件的方法。所述文件存储在jar文件内称为资源的文件夹中。 当我在编译后运行代码时,这当然可以完美地工作,但是在导出到.jar文件后会引发异常。我已经研究过使用InputStream,FileInputStream,但似乎找

  • 问题内容: 我需要能够访问存储在已编译jar文件中的文件。我已经弄清楚了如何将文件添加到项目中,但是如何在代码中引用它呢?如何将文件从jar文件复制到用户硬盘驱动器上的某个位置?我知道有很多方法可以访问文件(FileInputStream,FileReader等),但是我不知道如何查看自身。 问题答案: 您可以使用如下形式: 如果foo.txt位于JAR文件的根目录中,则可以使用: 我相信,假设该

  • 问题内容: 我正在应用程序中下载动态文件,并使用iframe来模拟ajax。我正在做的是,当下载请求发出后,我将创建一个动态的不可见iframe,并将iframe的src设置为下载网址。我能够成功下载该文件,但要求是显示一个下载下载指示器一旦开始下载,并在下载对话框出现后立即完成。我在创建iframe后提供了回调,以显示下载指示器已成功运行,并在iframe的“ onload”上提供了另一种方法,

  • 我有一套使用gradle运行后端服务器的代码。我正在终端中运行。当我运行它时,它开始处理,然后抛出关于文件位置的巨大错误。如果我能解决这个问题,我该怎么解决呢。 我正试图弄清楚为什么找不到这些文件。 使现代化 这就是构建。格雷德尔档案。。。我在试着跑gradle:Bootlun

  • 我正在使用OCRA将我的rb文件转换为exe文件。脚本运行正常,它还创建了一个exe文件。但是,当我将exe文件发送给一个用户运行(在他的系统中没有安装ruby)时,他会在exe运行之间遇到以下错误…Windows找不到Rubyw。请确保键入的名称正确,然后再试一次。要搜索文件,请单击开始按钮,然后单击搜索。.. 以前有人面对过这个问题吗? 谢谢