[英]log4j2 not writing into file
log4j2.xml
我已经检查了关于此错误的几个问题,但是我无法弄清为什么数据没有写入日志文件。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<RollingRandomAccessFile name="HzServer"
filename="logs/hzServer.log" immediateFlush="false" append="true"
filepattern="logs/hzServer.log-%d{MM-dd-yyyy}">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} %highlight{%level}{FATAL=bg_red, ERROR=red, WARN=yellow, INFO=green, DEBUG=blue} - %msg%throwable%n" />
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB" />
</Policies>
<DefaultRolloverStrategy max="20" />
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Logger name="com.example" level="debug" includeLocation="true"
additivity="false">
<AppenderRef ref="HzServer" />
</Logger>
</Loggers>
</Configuration>
pom.xml
配置似乎很好,甚至检查了依赖关系。
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.8.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.8.2</version>
</dependency>
文件本示例中使用的Spring Boot应用程序。
@SpringBootApplication
@ComponentScan
public class HzServer implements CommandLineRunner
{
LoggerContext loggerContext = Configurator.initialize("hzServer","log4j2.xml");
Logger logger = LoggerFactory.getLogger(HzServer.class);
@Autowired
HazelcastInstance hzInstance;
public static void main(String[] args)
{
SpringApplication.run(HzServer.class);
}
@Override
public void run(String... args) throws Exception
{
ITopic<String> topic = hzInstance.getTopic("myTopic");
topic.publish("HelloWorld");
logger.info("Topic published");
logger.debug("Topic published");
logger.error("Topic published");
logger.trace("Topic published");
}
}
运行该程序时,日志文件完全空白。 无法找出确切的问题。
请注意记录器配置中的“名称”属性:
<Logger name="com.example" level="debug" includeLocation="true"
additivity="false">
<AppenderRef ref="HzServer" />
</Logger>
名称为com.example
,因此,该类中的logger检索应为
Logger logger = LoggerFactory.getLogger("com.example");
另外,删除RollingRandomAccessFile
附加程序上的RollingRandomAccessFile
immediateFlush="false"
。 由于某些原因,即使记录器名称正确,文件仍为空。
并用记录器上下文初始化删除该行,不需要初始化记录器。
LoggerContext loggerContext = Configurator.initialize("hzServer","log4j2.xml");
希望能有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.