Log4j2.xml 不会在 java 休眠框架中突然创建文件

Log4j2.xml doesn't create file suddenly in java hibernate framework

我在 NetBeans 中有一个带有休眠框架的 Maven 项目。很长一段时间它都在正确地工作。在数据库中进行一些修改后,控制台日志仍在工作,但写入文件已停止,没有任何错误或异常。我已经删除了日志文件目录并重新启动项目,但这次它甚至无法创建文件路径目录。 这是我的 log4j2.xml 配置(在 src/main/resources 中)

我已将路径更改为 D:\logs 和 D:/logs,并尝试了不同级别(调试、信息、错误)。管理员还尝试从命令行 运行 我的 "Server.jar"。应该提到的是,我尝试了 Log4J creates log file but does not write to it 中的解决方案和许多其他建议的解决方案,但没有成功。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug">
    <Properties>
        <Property name="path">${sys:user.home}/logs/server</Property>
    </Properties>
    <Appenders >
        <RollingFile name="connections"  append="true"  fileName="${path}/connections.log"
                     filePattern="${path}/connections-%d{yyyy-MM-dd}-%i.log" >
            <!-- log pattern -->
            <PatternLayout>
                <pattern> %d{yyyy-MM-dd HH:mm:ss}  [%-4level] - %msg %n</pattern>
            </PatternLayout>
            <!-- set file size policy -->
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>        
        <RollingFile name="unexpected-events"  append="true"  fileName="${path}/unexpected-events.log"
                     filePattern="${path}/unexpected-events-%d{yyyy-MM-dd}-%i.log" >
            <!-- log pattern -->
            <PatternLayout>
                <pattern> %d{yyyy-MM-dd HH:mm:ss}  [%-4level] - %msg %n</pattern>
            </PatternLayout>
            <!-- set file size policy -->
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
        <RollingFile name="readouts"  append="true"  fileName="${path}/readouts.log"
                     filePattern="${path}/readouts-%d{yyyy-MM-dd}-%i.log" >
            <!-- log pattern -->
            <PatternLayout>
                <pattern> %d{yyyy-MM-dd HH:mm:ss}  [%-4level] - %msg %n</pattern>
            </PatternLayout>
            <!-- set file size policy -->
            <Policies>
                <SizeBasedTriggeringPolicy size="20 MB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>        
    </Appenders>
    <Loggers>
        <Logger name="connections" level="info" additivity="false">
            <appender-ref ref="connections" level="debug"/>
            <!--<appender-ref ref="console-log" level="debug"/>-->
        </Logger>                
        <Logger name="unexpected-events" level="info" additivity="false">
            <appender-ref ref="unexpected-events" level="debug"/>
            <!--<appender-ref ref="console-log" level="debug"/>-->
        </Logger>
        <Logger name="readouts" level="info" additivity="false">
            <appender-ref ref="readouts" level="debug"/>
            <!--<appender-ref ref="console-log" level="debug"/>-->
        </Logger>
        <Root level="error" additivity="false">
            <!--<AppenderRef ref="console-log"/>-->
        </Root>
    </Loggers>
</Configuration>

这就是我在 java class 中使用它的方式:

    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;

    ......

    private static final Logger connectionsLog = LogManager.getLogger("connections");

    ....
     connectionsLog.info("device" + deviceNumber + " disconnected");

commons-loggingjcl-over-slf4j 都在类路径中时,我曾见过这样的怪事。从 Maven 类路径中排除 commons-logging,它出现的任何地方通常都有帮助。

特别感谢 user944849 ,我了解到问题可能与 maven 依赖项有关。然后我检查了我的项目的以前版本(它有正确的日志记录)并比较依赖关系,发现添加了一个库 "log4j-to-slf4j"(由于导入 "org.springframework.boot" 而添加)。然后首先我将它从 pom.xml 文件的依赖项中排除,结果它在 NetBeans IDE 中工作正常但在它之外没有。然后,我从 pom.xml 中删除了该依赖项,问题得到了解决!