java - Log4j2.xml 在 java hibernate 框架中不会突然创建文件
问题描述
我在 NetBeans 中有一个带有休眠框架的 Maven 项目。很长一段时间以来,它都在正确地工作。对数据库进行一些修改后,控制台日志仍在工作,但写入文件已停止,没有任何错误或异常。我已删除日志文件目录并重新启动项目,但这一次它甚至无法创建文件路径目录。这是我的 log4j2.xml 配置(在 src/main/resources 中)
我已将路径更改为 D:\logs 和 D:/logs,并尝试了不同的级别(调试、信息、错误)。还尝试由管理员从命令行运行我的“Server.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");
解决方案
当两者都在类路径上时commons-logging
,我已经看到了这样的怪异。jcl-over-slf4j
从 Maven 类路径中排除commons-logging
它出现的任何地方通常都有帮助。
推荐阅读
- python - 打印任何数字的素数分解的函数/ Python
- python - Is there a way to iterate through a list and change a string based on the list contents?
- java - 如何从 Java 超类中的静态方法创建子类的新实例?
- javascript - Div dissapears after I add script
- firebase - Flutter: 'GoogleUtilities/GULAppEnvironmentUtil.h' file not found
- python - Text not updating on Asyncronous Webpage using flask-websockets
- javascript - VueJS: Uncaught (in promise) TypeError: Cannot read property 'rol' of undefined
- sqlite - phpLiteAdmin v1.9.8.2 has "SQL?" showing up all over the page
- influxdb - 在 influxql 中使用正则表达式排除测量值
- tensorflow - TensorFlow Hub 上与北美地标分类模型的输出不匹配