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

Log4J 2未写入文件

聂奇
2023-03-14

我试图使用log4j 2实现一些日志记录。控制台输出是可以的,但当我试图写一些日志到文件我不能管理它。

我的pom。xml

<dependencies>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.8</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.8</version>
        </dependency>
    </dependencies>

我的log4j2。xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="60">
    <Properties>
        <Property name="log-path">logs</Property>
        <Property name="archive">${log-path}/archive</Property>
    </Properties>
    <Appenders>
        <Console name="Console-Appender" target="SYSTEM_OUT">
            <PatternLayout>
                <pattern>
                    [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
                </pattern>>
            </PatternLayout>
        </Console>
        <File name="File" fileName="${log-path}/xmlfilelog.log" immediateFlush="true" >
            <PatternLayout>
                <pattern>
                    [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
                </pattern>
            </PatternLayout>
        </File>
    </Appenders>
    <Loggers>
        <Logger name="les.dam" level="trace">
            <AppenderRef ref="File" level="trace"/>
        </Logger>
        <Root level="trace">
            <AppenderRef ref="Console-Appender"/>
        </Root>
    </Loggers>
</Configuration>

我使用log4j的方式如下:

private static Logger logger = LogManager.getLogger();
logger.debug("This is a debug message");
logger.info("This is an info message");
logger.warn("This is a warn message");
logger.error("This is an error message");
logger.fatal("This is a fatal message");

我使用记录器的类在les.dam包下。

xml配置位于src/main/resources下。

日志文件夹与源文件夹处于同一级别。

共有2个答案

从元明
2023-03-14

您必须检查log4j2是否使用您提供的log4j2.xml,而不是默认配置。

  1. 更改log4j2。xml

配置状态="跟踪"监视器Interval="60"

然后检查控制台输出。

%d{yyyy-MM-dd HH:MM:ss.SSS}[%-5level][%t]%c{1}-%msg%n

然后检查控制台输出。

如果log4j正在使用log4j2。xml,检查FileAppender配置https://logging.apache.org/log4j/2.x/manual/appenders.html#FileAppender.

如果log4j没有使用log4j2。xml,https://logging.apache.org/log4j/2.x/manual/configuration.html.-Dlog4j。configurationFile=src/main/resources/log4j2。xml

宦瀚
2023-03-14

你的配置看起来不错。一个可能的原因是找不到配置文件和默认配置(仅控制台出现错误)。

要验证,请更改配置,从开始

是你的log4j2。xml配置文件位于src/main/resources?-更新:谢谢你的更新,所以是的,很好。

你能先用绝对路径配置文件附加器吗?

你能显示做日志记录的类的完整包名称吗?

 类似资料:
  • 我使用带有yaml配置的Log4j2。将日志记录到控制台工作得很好,每次都会创建一个外部日志文件,但它没有条目。谢谢你的提示。 src/Main/java/my/example/log/: 创建但为空的文件是

  • 理想情况下,我想在localhost上记录开发过程中的一切,只记录实时服务器上的错误。我在我的开发平台(Windows 10,JavaWicket)上无法登录文件。 log4j2.xml 我已经设法得到一些日志写入我tomcat的文件夹。 只有我的一些信息出现了。我不知道什么符号有意义,什么符号没有意义。 可公开访问页面的基页记录子类。 [信息]2017-10-19 17:07:13.208[ht

  • Log4j2在读取我的RollingFile appender的filePattern中的日期时遇到了困难。当我添加一个TimeBasedTriggeringPolicy并重新配置我的配置文件时,我会得到以下错误: 如果注释掉,则追加器开始工作并将日志写入我的文件。 以下是POM中的log4j依赖项: 下面是我的log4j2.xml文件:

  • 作为log4j2漏洞的一部分,我们正在迁移到log4j2.xml。但在应用程序启动期间,不会拾取新创建的log4j2。我已经执行了以下所有选项,但徒劳。 尝试的选项: 尝试添加和删除log4j-jcl依赖项。 删除了spring-boot-starter日志记录依赖项。 试着用log4j2.properties代替log4j2.xml. 在application.properties.中添加log

  • 我刚开始使用log4j2 我正在尝试配置xml,以便使用和附加符将日志发送到日志文件中。这个附加器工作得很好。我想使用appender,这样它就可以每天清除日志文件,但是当它第一次创建日志文件时,它没有将任何日志消息写入创建的文件中,所以我来这里是为了得到一些建议

  • 问题内容: 我有下面的代码 执行后,文件创建成功,但创建的文件为空 那么代码有什么问题呢? 问题答案: 您必须关闭,否则不会刷新当前缓冲区。您可以直接调用该方法。 如果要关闭文件,则无需使用该方法。该可用于例如,如果一会你的程序运行和输出文件中的东西,你想在其他地方检查。

  • 在中有一个,可以将日志写入到。 我需要在中使用相同的功能,但我还没有找到这样做的选项。有人知道如何使用实现同样的效果吗?

  • 问题内容: 我正在编写一种自动提款机程序,该程序会将数据输出到文件中(是​​的,我知道它不是英语,但这不是重点),并且遇到了错误。 当我尝试使用它不起作用时,我不知道为什么。 for循环有效,但各行。这真的让我感到困惑!我已经尝试过)并且得到了,但这仍然无济于事。 有人可以解释我在做什么错吗? 问题答案: 为什么要在writeToFile调用中打开和关闭流?您不应该在for循环之前在writeFo