- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 spring boot(2.2.0.RELEASE) 配置 log4j2。在 tomcat 中部署 war 时出现一些运行时异常。我已设置系统属性(日志记录名称),然后在 log4j 属性中提到该名称。
运行时错误:
ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile: java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender
Log4j.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Properties>
<Property name="LOG_PATTERN">%d{yyyy-MM-dd'@'HH:mm:ss}|[%t]|[AM]|%p|%X{Slf4jMDCFilter.UUID}|%c{1}()
%M(%L) %m%n </Property>
<Property name="APP_LOG_ROOT"
value="logs/${sys:finlog}">
</Property>
</Properties>
<Appenders>
<RollingFile name="errorlog"
fileName="${APP_LOG_ROOT}/error.log"
filePattern="${APP_LOG_ROOT}/ErrorLog-%d{yyyy-MM-dd}-%i.log">
<LevelRangeFilter minLevel="ERROR" maxLevel="ERROR"
onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="19500KB"/>
</Policies>
</RollingFile>
<RollingFile name="debugLog"
fileName="${APP_LOG_ROOT}/debug.log"
filePattern="${APP_LOG_ROOT}/DebugLog-%d{yyyy-MM-dd}-%i.log">
<LevelRangeFilter minLevel="DEBUG" maxLevel="DEBUG"
onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="19500KB"/>
</Policies>
</RollingFile>
<RollingFile name="infoLog"
fileName="${APP_LOG_ROOT}/info.log"
filePattern="${APP_LOG_ROOT}/InfoLog-%d{yyyy-MM-dd}-%i.log">
<LevelRangeFilter minLevel="INFO" maxLevel="INFO"
onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="19500KB"/>
</Policies>
</RollingFile>
<RollingFile name="warnLog"
fileName="${APP_LOG_ROOT}/warn.log"
filePattern="${APP_LOG_ROOT}/WarnLog-%d{yyyy-MM-dd}-%i.log">
<LevelRangeFilter minLevel="WARN" maxLevel="WARN"
onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="19500KB"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="com.demo.engine" additivity="false"
level="debug">
<AppenderRef ref="errorlog"/>
<AppenderRef ref="debugLog"/>
<AppenderRef ref="infoLog"/>
<AppenderRef ref="warnLog"/>
</Logger>
<Logger name="org.springframework" additivity="false"
level="error">
<AppenderRef ref="springLog"/>
<AppenderRef ref="console"/>
</Logger>
<Root level="DEBUG">
</Root>
</Loggers>
</Configuration>
主要方法:在下面的主要方法中,我使用类加载器获取上下文名称,然后使用系统属性放置该名称。
public class Main extends SpringBootServletInitializer {
static {
String currentpath = "";
String logAppContext = "";
if (Thread.currentThread().getContextClassLoader().getResource("") != null) {
currentpath = Thread.currentThread().getContextClassLoader().getResource("").toString().replace("%23", "#")
.replace("file:/", "");
logAppContext = currentpath.isEmpty() ? logAppContext
: Paths.get(currentpath).getParent().getParent().getFileName().toString();
System.setProperty("finlog", logAppContext);
System.setProperty("context", logAppContext);
}
}
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Main.class);
}
}
最佳答案
就我而言,这是记录的文件路径的权限问题。更改权限为我解决了这个问题
关于java - 如何修复无法调用元素 RollingFile 类 org.apache.logging.log4j.core.appender.RollingFileAppender 中的工厂方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60527039/
有人能说出这些东西有什么不同吗?此外,我无法理解,如果 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
我是一名优秀的程序员,十分优秀!