- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用系统属性变量创建 RollingFileAppender 时出现以下错误。
ERROR Unable to invoke factory method in class class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile. java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:132)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:918)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:858)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:850)
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:479)
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:219)
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:231)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:496)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:566)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:582)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:217)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:152)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:551)
at com.hifx.lens.services.AvroSerializerFactory.<init>(AvroSerializerFactory.java:16)
at com.hifx.lens.services.AvroSerializerFactory.init(AvroSerializerFactory.java:43)
at com.hifx.lens.Accumulo.main(Accumulo.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Caused by: java.lang.ClassCastException: org.apache.logging.log4j.core.appender.FileManager cannot be cast to org.apache.logging.log4j.core.appender.rolling.RollingFileManager
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:103)
at org.apache.logging.log4j.core.appender.RollingFileAppender.createAppender(RollingFileAppender.java:191)
... 27 more
我的log4j2.yml配置文件是
Configutation:
name: Default
Properties:
Property:
name: LOG_PATH
value: "logs"
Appenders:
Console:
name: Console_Appender
target: SYSTEM_OUT
PatternLayout:
pattern: "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"
File:
name: File_Appender
fileName: ${sys:LOG_PATH}/log.log
PatternLayout:
pattern: "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"
RollingFile:
name: RollingFile_Appender
fileName: ${sys:LOG_PATH}/log.log
filePattern: "logs/archive/rollingfile.log.%d{yyyy-MM-dd-hh-mm}.gz"
PatternLayout:
pattern: "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"
Policies:
SizeBasedTriggeringPolicy:
size: 100 KB
DefaultRollOverStrategy:
max: 30
Loggers:
Root:
level: debug
AppenderRef:
- ref: RollingFile_Appender
Logger:
- name: Accumulo_File_logger
level: debug
AppenderRef:
- ref: File_Appender
如果我将 RollingFile_Appender 的文件名更改为使用属性名称,即:
fileName: ${LOG_PATH}/log.log
然后错误消失,一切正常。
如果我使用 File_Appender(它也使用相同的系统属性变量(sys:LOG_PATH)),那么一切都工作正常。
如果我将 sys: 更改为 env: 也会出现同样的错误:我认为 jackson 存在一些解析问题。我需要从环境变量配置日志路径。
使用的依赖项是
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>2.6.2</version>
</dependency>
有人请帮助我
最佳答案
这是因为您定义了 File_Appender 和 RollingFile_Appender 来登录同一文件。它们“拥有”自己的日志文件,因此一旦为 ${sys:LOG_PATH}/log.log
创建了文件附加程序,您就无法创建指向同一文件的 RollingFile 附加程序。配置文件中的第二个附加程序尝试创建一个负责该文件的 LogManager,发现第一个附加程序已经存在,因此尝试转换为它需要的类 - 但失败了。
如果将 RollingFile_Appender 移至 File_Appender 上方,则异常将是:
main ERROR Unable to invoke factory method in class class org.apache.logging.log4j.core.appender.FileAppender for element File. java.lang.reflect.InvocationTargetException
现在 RollingFile_Appender 将拥有 ${sys:LOG_PATH}/log.log
文件,并且由于同样的原因,您将无法创建 File_Appender。
解决方案:删除其中一个附加程序,同时拥有两个附加程序是没有意义的 - 它们必须相互竞争,或者将每个附加程序指向不同的文件。
关于java - 无法使用系统属性变量创建 RollingFileAppender,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39275825/
有人能说出这些东西有什么不同吗?此外,我无法理解,如果 DailyRollingFileAppender 存在,为什么需要使用 TimeBasedRollingPolicy ? 最佳答案 org.ap
我有一个在单个服务器上运行的 WCF 服务,使用 Log4net 通过 INFO 和 WARN 级别的日志条目跟踪使用情况。使用具有以下非常标准配置的 RollingFileAppender:
典型的 logback appender 配置是 FILEPATH.log FILEPATH.%d{yyyy-MM-dd-HH}.log 24
使用配置: 我可以获得名为“Mylog20120529.log”的历史日志。 我想知道我是否可以获得名为“20120529.log”的日志。 感谢大家 最佳答案 在这里应用一个技巧,它将完成工作。
使用系统属性变量创建 RollingFileAppender 时出现以下错误。 ERROR Unable to invoke factory method in class class org.apa
我的 tomcat Web 应用程序有以下 log4j.xml 文件:
我正在使用 Log4Net 登录我编写的应用程序。为了写入日志文件,我使用了具有 5 个备份和最大文件大小为 250KB 的 RollingFileAppender。 我想做的是让用户有机会在发生崩溃
是否有任何流行的 Java 日志记录框架支持滚动文件附加器,我可以将其配置为每天滚动,并删除任何超过一定天数的日志文件?我知道我可以使用滚动文件附加程序和 cron,但想知道是否有人知道可以同时执行这
是否可以将 log4net 配置为每小时滚动文件?如果没有 - 有关如何使用所需功能覆盖 RollingFileAppender 以制作 HourlyRollingFileAppender 的任何提示
我正在使用RollingFileAppender和SizerollingStyle。默认情况下,它会创建带有编号扩展名的备份文件,这让我抓狂。是否可以更改它,使其始终使用定义的扩展名(例如 .txt
我们在开发和生产计算机上发现一个间歇性问题,即我们的日志文件未记录到。 当使用 Visual Studio 进行开发和调试时,我们在 VS 输出窗口中收到以下 log4net 错误消息: log4ne
使用 Log4j2 库版本 2.9.1。 我正在尝试以编程方式创建RollingFileAppender: RollingFileAppender appender = RollingFileAppe
当前版本的 Log4net 是否有办法创建具有复合滚动样式的 RollingFileAppender,其中滚动文件始终保留给定的扩展名(在我的情况下为 .log)? 我想要的格式示例: MyLog.l
我在 Web 项目中使用 log4net (v1.2.9.0)。一切正常,但几周后 RollingFileAppender 停止滚动。取而代之的是,每条日志消息都附加到同一个文件,因此现在这个文件已经
我正在以编程方式在 log4net 中配置 RollingFileAppender。我目前有这样的东西: RollingFileAppender fa = new RollingFileAppende
我有一个滚动文件附加器,它每天晚上滚动文件。但是,当它滚动时,新文件只有一个日志条目。似乎文件不再附加日志条目。如果我重新启动服务,它会正确记录。 这是我的设置:
我怎样才能创建一个 RollingFileAppender在接受谨慎标志的 Logback 中,还允许我指定日志文件的位置? 我尝试了以下操作,但正如我从文档中了解到的,logback 不支持 fil
虽然我已经阅读了有关此问题的多个其他问题和答案,但我没有找到答案,希望得到任何帮助。 public static void rerouteAppenderToFile(File file, Logge
您好,我现在使用 log4net 有一段时间了。这是我的记录器: public static class LoggerSetup { private static RollingFileApp
我有两个上下文在同一个 JVM 和 Tomcat 实例中运行,我想使用 logback RollingFileAppender 写入同一个日志文件。如果我使用相同的文件,logback Rolling
我是一名优秀的程序员,十分优秀!