当前位置: 首页 > 知识库问答 >
问题:

Log4j2。xml不会在JavaHibernate框架中突然创建文件

颜实
2023-03-14

我有一个使用hibernate框架的NetBeans中的maven项目。在很长一段时间里,它一直在正确地完成自己的工作。在数据库中进行一些修改后,控制台日志仍在工作,但写入文件的操作已停止,没有任何错误或异常。我已删除日志文件目录并重新启动项目,但这次它甚至无法创建文件路径目录。这是我的日志4J2。xml配置(在src/main/resources中)

我已经更改了路径到D:\日志和D:/日志,并尝试了不同的级别(调试,信息,错误)。还试图通过管理员从命令行运行我的“erver.jar”。应该提到的是,我尝试了Log4J中的解决方案创建日志文件,但没有写入它和许多其他建议的解决方案,但没有成功。

<?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类中使用它的方式:

    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");

共有2个答案

陈季
2023-03-14

特别感谢user944849,我明白了这个问题可能与maven依赖性有关。然后我检查了我的项目的早期版本(它有正确的日志记录)并比较了依赖项,发现添加了一个库“log4j-to-slf4j”(由于导入“org.springframework.boot”而添加)。然后,首先我将其从pom中的依赖项中排除。xml文件,因此它在NetBeans IDE中运行良好,但没有脱离它。然后我从pom中删除了这个依赖项。xml和问题像魅力一样解决了!

哈宪
2023-03-14

我见过这样的怪事,当共享日志jcl-over-slf4j都在类路径上时。从Maven类路径中排除公共日志通常会有所帮助。

 类似资料:
  • 本文向大家介绍在Python的Django框架中创建语言文件,包括了在Python的Django框架中创建语言文件的使用技巧和注意事项,需要的朋友参考一下 当你标记了翻译字符串,你就需要写出(或获取已有的)对应的语言翻译信息。 这里就是它如何工作的。 地域限制 Django不支持把你的应用本地化到一个连它自己都还没被翻译的地域。 在这种情况下,它将忽略你的翻译文件。 如果你想尝试这个并且Djang

  • 我想使用新的log4j2-Java日志框架。一切正常,但我从一小时后就尝试加载一个自定义配置文件来配置日志记录(如日志级别)。 这是我的log4j2.xml: 我尝试了以下方法,但没有任何效果: 移动log4j2.xml文件,使其位于默认包中。 将log4j2.xml文件移动到项目中的任意位置 将log4j2.xml文件命名为log4j.xml 在项目中创建一个文件夹,将log4j2.xml文件放

  • 我想设置日志级别、文件名和日志文件的文件路径。我找到了一种方法来实现这一点,除了log4j创建一个附加的日志文件外,其他方法都可以实现。我得到了下面的log4j2。xml: 在我的主函数中,我设置了${sys:logDir}和${sys:logFilename}: 它像我想要的那样工作,但是log4j在我的主项目路径中创建了一个名为“${sys:logDir}${sys:logFilename}”

  • 我创建了一个XML文件,可以成功地使用该信息创建一个下拉列表。我想要实现的是从stringResource文件中添加变量,为下拉列表创建值。 我的原始XML文件是: 在尝试添加变量时,我尝试了以下方法: 我的工作代码,与原始XML文件是: 在顶部的XML文件中,我的下拉列表正确列出了所有名称: --选择-- 农业 航空公司 我无法将属性名设置为变量,所以我更改了代码,以查找节点innerXML,如

  • CommandInvokationFailure:无法生成APK。有关详细信息,请参阅控制台。C:\Program Files\Java\jdk1.8.0_77\bin\Java.exe-xmx2048m- dcom.android.sdkmanager.toolsdir=“C:/users/fluentp/appdata/local/android/sdk\tools”-dfile.encodi

  • 我有将日志保存到文件配置,但日志会附加到现有内容。我想创建总是新的文件。我怎么能那样做? 我的log4j2.xml: