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

为什么log4j2不生成日志文件?

空正豪
2023-03-14

我的任务是升级一个大型服务类型的java程序(不是我写的,第一次接触它),它有大量的开源库。我正在升级到log4j2,它以前有log4j,但我不知道它是否工作正常。

我根本拿不到日志文件。这是在使用NetBeans 8的本地开发环境中。我的类路径中有log4j-api和log4j-core2.9.0文件。我在项目根目录中的log4j2.xml文件是:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
    <Console name="Console" target="SYSTEM_OUT">
        <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
    <File name="FileAppender" fileName="DistEngine.log" immediateFlush="true" append="false" >
        <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </File>
</Appenders>
<Loggers>
    <Root level="ALL">
        <AppenderRef ref="FileAppender"/>
        <AppenderRef ref="Console"/>
    </Root>
</Loggers>

类日志变量是(是的,类名是Main,它扩展了一个父类):

private static final Logger MAINLOGGER = LogManager.getLogger(Main.class);
MAINLOGGER.info("entering listener main");

我的项目根目录中没有distengine.log文件,也没有从log4j2到stdout的任何日志记录。我没有收到log4j2消息,说明它找不到配置文件。

配置文件、类变量和日志调用都是从此集合中日志记录正常工作的另一个程序复制的。

我从一些开源类获得了一些stdout日志记录,主要是在com.sun.enterprise.ee.cms.impl.jxta和com.sun.enterprise.ee.cms.impl.jxTamGMT名称空间中。

我有一种感觉,开源日志记录可能与log4j2冲突,因为我从其他程序复制的代码工作良好。

多谢了。

编辑:更多解析细节:其中一个开源库jar文件(jgroups)包含一个具有有效设置的log4j2.xml文件。使用了这个配置文件而不是我的配置文件,因为项目是在自定义源之前用类路径中的lib jar配置的。我只是在设置了您建议的log4j2.debug属性之后才发现了这一点。

共有1个答案

钱和平
2023-03-14

我看不出配置文件有什么问题。我怀疑没有日志文件的原因是Log4j2没有看到配置文件。

默认情况下,Log4j2在类路径中查找配置文件。这是第一件要检查的事情。netbeans是否在类路径中包含项目根?

还可以使用系统属性-dlog4j.configurationfile=path/to/log4j2.xml指定配置文件的路径。请参阅https://logging.apache.org/log4j/2.x/faq.html#config_location

 类似资料:
  • 我从log4j1迁移过来。x到log4j2。我删除了log4j。属性文件并创建了log4j2。xml文件。迁移后,我运行了应用程序,但找不到。日志文件。 有没有人能告诉我

  • 我希望由log4j2创建的日志文件在其文件名中包含日期模式,包括当前活动文件。也就是说,如果今天的日期是2016-12-15,我希望当前日志文件是lager-2016-12-15.log。当日期改变时,我希望创建一个名为lager-2016-12-16.log的新文件。 使用,我无法使当前活动日志文件的文件名中具有日期模式。我的log4j2.xml: 使用此配置,翻转时的复制被搞乱了。从fileN

  • 我正在研究Wildfly 9/10。我使用定制的Log4j2配置文件编写了web应用程序。 配置文件正确地包含在war jar库中。 结果是,当我运行web应用程序时,它会生成以下文件: 但它继续在服务器控制台上打印日志,而文件保持为空。 相同的配置在独立应用程序上正常工作。我错过了什么? 更新当我部署我的应用程序时,服务器会打印以下调试级别信息:

  • 我目前正在创建一个系统,可以有模块(把它们看作插件),其中每一个都可以有自己的日志,专用的。 我想使用log4j2项目进行日志记录,但我似乎在文件附加符方面遇到了一些麻烦。 主项目(模块加载器和整个事情的“核心”)应该有自己的日志文件,而模块应该有自己的日志文件(像)。 即使搜索也没有给我提供任何接近的解决方案,我找到的只是xml配置中预定义的文件日志--这不是我想要的。 感谢你的阅读;即使是最轻

  • 我想通过log4j2配置生成半天日志文件。我已经给出: 还定义了: 但我只得到AM日志在这种方式,虽然我希望它是什么: 有人能帮我吗?

  • 我正在使用带有log4j2的Spring Boot1.5.9,当我测试日志记录功能时,创建了日志文件,但没有将日志写入其中,而控制台日志记录程序运行良好。请在pom.xml&log4j2.properties配置下面找到。 log4j2.properties文件: