问题标签 [fileappender]

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 投票
2 回答
1411 浏览

java - log4j 1.2.17 和 java8u162 不会翻转日志文件

我们在生产环境中面临一个问题,在某些情况下日志文件没有得到翻转。我们正在使用 Log4j 版本 1.2.17 以及 apache.commons-logging。创建自定义附加程序以滚动文件。appender 扩展了 Log4j 的 FileAppender。下面是 subAppend(LoggingEvent event) 方法的算法:

这是 Log4j.properties 文件

根据观察,系统上的日期发生了变化。日期设置为当前日期前 3 个月。

5 月 11 日再次经过 12 小时后,日期更改为当前日期。到那时,文件的时间戳已更改为 3 月 10 日。由于没有 RollOver,下一次检查仍然是 2018 年 5 月 11 日 00:00。但是在 5 月 12 日 00:00,文件应该已经按照第 3 行的条件翻转,并且应该创建了一个新文件,但没有发生。此外,该文件已达到最大大小。从那时起,在系统重新启动之前没有日志。

Java 版本是java8u162。虽然我找不到任何说明它是否与 java 相关的帖子。

我试图在测试环境中重现相同的场景,但一切都按预期工作。

有没有人在使用 Log4j 时遇到过这样的问题?请分享您的意见。提前致谢。

0 投票
1 回答
226 浏览

log4j2 - 在运行时修改现有的 log4j2 FileAppender 配置

我正在将应用程序(大型 Web 应用程序)从 log4j1.x 迁移到 log4j 2.11.0。

我需要帮助/澄清来迁移以下场景 -

--------场景1 log4j1.x:

在运行时我想更改文件,所以我只会做 appender.setFile(...new file...)。并做了。log4j2:我如何迁移上面的代码?

几个想法,但不是一个直接的答案:通过 LoggerContext 创建全新的附加程序,配置可能是一种方式,但我想更新现有附加程序的配置并重新加载 log4j2 xml。我怎么做?

另一种方法可能是重新定义这样的东西

然后在线程上下文中设置“dynamic_name”属性。但是我丢失了原始默认文件 import.log

任何帮助表示赞赏。让我知道你是否有想法。

0 投票
1 回答
15 浏览

log4j - log4j 1.2.12 以增量方式打印字符串:O

在我的项目中,log4j (1.2.12)在任何级别以增量方式打印字符串。例如:

2018 年 9 月 17 日 15:08:18 调试 AnagraficaServiceImpl:32 - :::: Riferimentioperazione UPLOAD OK salvati con esito OK 10214967 [default task-32] DEBUG [...].model.service.impl.AnagraficaServiceImpl - : ::: Riferimenti operazione UPLOAD OK salvati con esito OK 10214967 [default task-32] DEBUG [...].model.service.impl.AnagraficaServiceImpl - :::: Riferimenti operation UPLOAD OK salvati con esito OK 10214967 [default task- 32] DEBUG [...].model.service.impl.AnagraficaServiceImpl - :::: Riferimentioperazione UPLOAD OK salvati con esito OK 10214967 [default task-32] DEBUG [...].model.service.impl.AnagraficaServiceImpl - :::: Riferimenti operazione UPLOAD OK salvati con esito OK 10214967 [default task-32] DEBUG [...].model.service.impl.AnagraficaServiceImpl - ::::Riferimenti operazione UPLOAD OK salvati con esito OK 10214967 [default task-32] DEBUG [...].model.service.impl.AnagraficaServiceImpl - :::: Riferimenti operazione UPLOAD OK salvati con esito OK

如您所见,这些行具有相同的时间戳。在这种情况下,有 7 个日志字符串,并且在通过“ [...].model ”库进行下一次操作时,它们将变为 8,然后是 9,然后是 n !!!直到 server.log 未饱和,然后 jboss (AS 1.7) 重新启动! 请帮我 !!!

log4j.properties如果这样的事情发生在您身上,并且您还需要有关、jboss-deployment-structure、或任何其他配置standalone.xml的版本和详细信息的更多信息。pom.xml谢谢!

0 投票
1 回答
1476 浏览

android - logback-android FileAppender 不创建文件

我在 Kotlin 项目中使用logback-android在文件中生成日志。我之前在不同的 Android 版本中测试过这个解决方案没有任何问题,但我在 Android 5.1 中发现了一个问题:创建了日志文件的父目录,但没有创建日志文件。我该如何解决?

构建.gradle:

logback.xml:

0 投票
2 回答
583 浏览

log4net - Log4net 中的 FileAppender 和 RollingFileAppender 中的变量文件名

我正在尝试使用 log4net 使用 log4net.Util.PatternString 登录到具有变量名的文件。appender 配置如下所示:

使用此配置,文件已成功创建,名称如下:MyLogFile_PID12345.log

我已成功使用 %processid、%random{8}、%env{SOME_ENV_VAR}、%property{MYPROPERTY} 和 %appsetting{someKey}。

但是我想要的是插入一个日期,无论我尝试什么,似乎我都无法让它理解: %date, %utcdate, %date{DATE}, %utcdate{DATE}, %date{ISO8601 }、%date{ABSOLUTE}、%date{{HH:mm:ss} 或基本上任何形式的日期。

例如,有什么问题:

我也尝试使用单独的节点进行转换模式配置,但无济于事:

现在我正在使用自定义属性(使用 %property{MY_CUSTOM_PROPERTY_WITH_THE_NAME_I_WANT})来实现类似的效果,但除了有点矫枉过正之外,我想知道我做错了什么。我在不同的计算机和不同的应用程序中尝试过,但我无法得到我想要的。

顺便说一句,我的真正目标是在 RollingFileAppender 中使用它,但为了简单起见,我在这里询问(并尝试)FileAppender。

有什么帮助吗?

0 投票
1 回答
1575 浏览

java - 使用 log4j2 以编程方式创建 FileAppender 时出错

在线阅读文档后,我想尝试在本地计算机上测试 FileAppender。当我通过调用 build 方法创建对象时,我得到了错误。

我将在应用程序中升级 log4j 版本,并且当我无法在本地创建和测试一个文件附加程序时正在学习文件附加程序。我尝试在互联网上查找并找到一些有关如何创建它的代码。当我尝试相同时,我在堆栈跟踪中得到错误显示。我正在使用 Windows 机器并在 netbeans 上运行代码。

在调用 build() 方法期间出现错误。

我不明白为什么我得到空异常。

0 投票
1 回答
334 浏览

spring - 当从不使用附加程序时,我希望不创建 Logback 文件。[滚动文件附加器]

我正在为我的应用程序创建一个 logback-common 配置文件。我在其中定义了一个 RollingFileAppender,它为我所有的应用程序在文件中生成相同的日志格式(如果我们需要它)。有时我想使用这个 appender,有时不想(例如当我们测试时)。

因此,我们根据需要配置特定的 logback-{profile}.xml。但是当我们不使用 FILE appender 时,文件会被创建,我不想这样做。

我有:

  • logback-common.xml >> 带有所有附加程序定义(FILE 和 COMMON)appli_one
  • 资源/logback.xml >> 调用 logback-common 和 config/logback-{profile}.xml
  • resources/config/logback-{profile}.xml >> 特定的 appli/profile logback 配置。

我们可以在 logback-{profile}.xml 中进行配置

logback-common.xml

logback.xml

0 投票
1 回答
2478 浏览

java - log4j - RollingFileAppender - 日期模式和 MaxFileSize

我正在使用 log4j 1.x(带有 slf4j)。我想在 MaxFileSize 达到 100KB 或每分钟创建滚动文件,以先到者为准。但是,使用以下代码,DatePattern 无法正常工作,并且不是每分钟都创建文件。

我什至试过这个,但在这种情况下,它甚至没有创建任何文件。-

解决此问题的正确方法是什么?

0 投票
1 回答
34 浏览

log4j2 - 如何将 log4j2 写入的文件的命名推迟到文件打开时?

我试图让 log4j2 写入名称为 YYYYmmdd-HHMMSS.log 的日志文件,但在我们有一个良好的系统时间(> 1986 年)之前不要开始写入文件。我有一个在启动的系统上运行的应用程序,需要一段时间才能获得正确的时间;在那之前,系统认为它回到了 1970 年,写一个带有错误日期的日志文件真的没有意义。

使用自定义过滤器,我可以让 FileAppender 在设置系统时间之前不写入任何事件。在自定义过滤器(createOnDemand="true")传递第一个事件之前,我可以让 FileAppender 不打开文件。使用Log4J2 - 在运行时分配文件附加程序文件名,我可以获得名为 YYYYmmdd-HHMMSS.log 的文件,但配置 XML 中的 YYYYmmdd-HHMMSS.log 似乎在 log4j2 初始化时(而不是打开文件时)得到评估,所以我的文件名仍然是 19700101-000000.log。

有没有办法将 log4j2 FileAppender 的名称评估推迟到文件实际打开?或者,是否有一种偷偷摸摸的方法来使用 RollingFileAppender 来做到这一点?(我看不到更改当前文件的文件名的方法,只有旧文件)

我可以做一个自定义附加程序(FileAppender/FileManager 并没有那么长),但如果可能的话,我会尽量避免这种情况。

0 投票
0 回答
73 浏览

logging - 使用 log4j 升级到 2.15.0 的 InvalidPathException

从 log4j-2.13.2 升级到 2.15.0 时,我遇到了以下问题。

无法为元素 RollingFile 创建 org.apache.logging.log4j.core.appender.RollingFileAppender 类型的插件:java.nio.file.InvalidPathException: Illegal char <:> at index 5: ${web:rootDir}\ABC\ abxyz

有人可以建议使用什么模式来代替 ${web:rootDir} 吗?${web:rootDirs} 没有得到解决。

场景 1 LoggerContext 已创建,但后来由于某些用例而用于其他模块,删除了现有的记录器上下文并初始化新上下文。初始化时,由于 WebLookup 无法获取 Servletcontext,因此会出现此问题。使用 log4j-2.13.2 它按预期工作。

removeExistingLoggerContext(); Configurator.initialize(context.getServletContextName(), getClass().getClassLoader(), filePaths, context); 有问题,因为在删除旧 loggerContext 后无法使用 log4j-2.15.0 进行 weblookup