我正在尝试在一个标准的Java应用程序中设置log4j2。
我在网上登录了很多教程,但它们都是基于使用Maven项目的,因为我使用的是标准的Vanilla Java,使用的是SDK 1.8。该应用程序没有将主类作为起点,因为该应用程序是执行构建的.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.xmllog4j2.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");当从客户端应用程序运行插件时,我得到了所有预期的结果,但没有日志文件。
发布于 2019-01-10 17:57:33
为了达到这个目的,你应该有类似的东西。例如,您不需要设置附加器的类型。
<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, rollingFilelog4j2.xml必须在资源文件夹中,请检查
https://stackoverflow.com/questions/54125767
复制相似问题