log4jjava配置有问题
我在用Java配置log4j2时遇到了问题 我有一个工作XML配置:log4jjava配置有问题,java,log4j,config,log4j2,Java,Log4j,Config,Log4j2,我在用Java配置log4j2时遇到了问题 我有一个工作XML配置: <?xml version="1.0" encoding="UTF-8"?> <configuration status="DEBUG"> <appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="DEBUG">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level - %msg%n" />
</Console>
<File name="DM_PREPUB" fileName="logs/41_2015/DM_PREPUB.log">
<MarkerFilter marker="DM_PREPUB" onMatch="ACCEPT" onMismatch="DENY" />
<PatternLayout>
<pattern>%d %p %C{10} [%t] %m%n</pattern>
</PatternLayout>
</File>
<File name="BACKUP" fileName="logs/41_2015/BACKUP.log">
<MarkerFilter marker="BACKUP" onMatch="ACCEPT" onMismatch="DENY" />
<PatternLayout>
<pattern>%d %p %C{10} [%t] %m%n</pattern>
</PatternLayout>
</File>
</appenders>
<loggers>
<logger name="foo.bar" level="DEBUG">
<appender-ref ref="DM_PREPUB" />
<appender-ref ref="BACKUP" />
</logger>
<root level="ALL">
<appender-ref ref="Console" />
</root>
</loggers>
</configuration>
Java配置代码似乎没有那么复杂,这就是为什么我没有设法发现哪里做错了
如果你能帮忙,那太好了
谢谢大家!
erwann当我遇到类似问题时,对我有效的方法是使用以下命令初始化记录器:
((org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false)).start(builder.build());
不过我还没有试过你的方法。我的问题是记录器没有写任何东西,在调试时,我发现我使用builder
提供的配置从未实际使用过,因为Log4j2不知何故决定它已经使用了相同的配置,不需要重新配置
如果上述方法无效,请尝试调试以查看
builder.build()
和Configurator.initialize()
中的情况。据我回忆,我的问题是由AbstractLifeCycle.state
标志引起的,该标志需要处于状态初始化
,但很快就变成了启动
。我忘了指定,在运行时,文件是正常创建的!但它们仍然是空的,控制台也是空的……您可以使用“编辑”链接将其添加到问题本身,而不是添加到注释中。然后您将标记作为参数登录?(例如logger.info(globalMarker,“ACCEPT 1”)对吗?我可以很好地使用此解决方案!我欠你一个大人情,因为我没有像你那样挣扎。我想我应该先考虑调试。这对我也很有效。我不确定当我尝试使用Configurator.initialize()遵循重新配置示例时,为什么会起作用。)这里:无论我如何配置构建器,它似乎从未工作过,并且始终使用默认配置。
logger = LogManager.getLogger("foo.bar");
globalMarker = MarkerManager.getMarker("DM_PREPUB");
((org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false)).start(builder.build());