我正在尝试在标准Java应用程序中设置log4j2。
我已经在线上登录了许多教程,但是它们都基于使用Maven项目,就像我使用SDK 1.8来使用Standard Vanilla Java一样。该应用程序没有Main Class作为起点,因为该应用程序是另一个执行已构建的.jar的应用程序的插件。
我有一个适合我需要的日志文件,并且相信我已经在代码中正确设置了Logger的实例。
我位于src文件夹中的配置文件。项目结构如下:
Project Root
- src
- UI
- Errors
- error classes go here
- Reports
- report classes go here
- Utilities
- utility classes go here
- CapitalReportsApplication - (This is the starting point of the application)
- resources
- log4j2.xml
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<File name="MyFile" fileName="all.log" immediateFlush="false" append="false">
<PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>
类文件记录器初始化
private static Logger log = LogManager.getLogger(CapitalReportsApplication.class.getName());
log.info("This is a message");
从客户端应用程序运行插件时,我获得了所有预期结果,但没有日志文件。
答案 0 :(得分:0)
为此,您应该有类似的东西。例如,您无需设置附加程序的类型。
<appender name="rollingFile" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${LOG_DIR}/application.log" />
<param name="MaxFileSize" value="10MB" />
<param name="MaxBackupIndex" value="5" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n" />
</layout>
</appender>
属性可能类似于(log4j.properties):
log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.File=${LOG_DIR}/application.log
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
log4j.appender.rollingFile.MaxFileSize=10MB
log4j.appender.rollingFile.MaxBackupIndex=5
log4j.appender.rollingFile.append=true
log4j.rootCategory=ALL, rollingFile
log4j2.xml必须位于资源文件夹中,请检查