Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何知道log4j何时创建了新的日志文件?_Java_Spring Boot_Log4j2 - Fatal编程技术网

Java 如何知道log4j何时创建了新的日志文件?

Java 如何知道log4j何时创建了新的日志文件?,java,spring-boot,log4j2,Java,Spring Boot,Log4j2,目前,我正在使用log4j2,在我的java应用程序中,我想知道是否有可能有一个侦听器,因为当生成一个新文件时(因为它超过了权重,或者因为日期),可以在我的BD中记录每个生成的文件。我找到了一些关于JDBCAppender的信息,但它对我没有帮助,因为它会侦听每个日志,我只想在生成新文件时侦听。WatchService允许您监视目录中的文件更改。请查看: 注册以监视目录的创建: private void registerDirectory(Path dir) throws IOException

目前,我正在使用log4j2,在我的java应用程序中,我想知道是否有可能有一个侦听器,因为当生成一个新文件时(因为它超过了权重,或者因为日期),可以在我的BD中记录每个生成的文件。我找到了一些关于JDBCAppender的信息,但它对我没有帮助,因为它会侦听每个日志,我只想在生成新文件时侦听。WatchService允许您监视目录中的文件更改。请查看:

注册以监视目录的创建:

private void registerDirectory(Path dir) throws IOException 
{
    WatchKey key = dir.register(watcher, ENTRY_CREATE);
    keys.put(key, dir);
}

Log4j 2.14.1添加了一个可以使用的滚动侦听器。添加它主要是为了简化单元测试,但它允许您在创建新文件时进行检测。只是要小心最小化在被调用的方法中所做的事情。它提供了一个在滚动之前调用的方法,以及一个在同步工作完成之后调用的方法。如果启用了文件压缩,则该操作将异步进行,并且在调用该方法时可能无法完成。对于此选项,您可以通过在RollingFileManager上调用addRolloverListener()来实现和注册侦听器


您还可以创建自定义操作。每次滚动时都会对其进行评估。

我认为这太多了,因为每次将其写入日志文件时,它都会通知我。请查看,我认为它可以控制,例如创建文件时。请参见此示例:它显示了如何筛选新文件和更改的文件。虽然此链接可以回答问题,最好在这里包括答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效-