Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Log4j2没有像指定的那样格式化输出,我认为没有添加附加器_Java_Logging_Log4j_Log4j2 - Fatal编程技术网

Java Log4j2没有像指定的那样格式化输出,我认为没有添加附加器

Java Log4j2没有像指定的那样格式化输出,我认为没有添加附加器,java,logging,log4j,log4j2,Java,Logging,Log4j,Log4j2,我正在学习在我的应用程序中使用log4j2。为了便于使用,我添加了一个带格式说明符的附加器和模式布局。但是,输出不符合规范。甚至信息级别的语句也没有打印出来。 代码: 首先,未配置根记录器(默认为错误级别) 因此,将打印错误日志和更高级别的日志 其次,在添加appender之后,没有构建生成器 builder.add(appenderBuilder); 应更新至 builder.add(appenderBuilder); builder.build();

我正在学习在我的应用程序中使用log4j2。为了便于使用,我添加了一个带格式说明符的附加器和模式布局。但是,输出不符合规范。甚至信息级别的语句也没有打印出来。 代码:


首先,未配置根记录器(默认为错误级别) 因此,将打印错误日志和更高级别的日志

其次,在添加appender之后,没有构建生成器

    builder.add(appenderBuilder);        
应更新至

    builder.add(appenderBuilder);
    builder.build();

首先,未配置根记录器(默认为错误级别) 因此,将打印错误日志和更高级别的日志

其次,在添加appender之后,没有构建生成器

    builder.add(appenderBuilder);        
应更新至

    builder.add(appenderBuilder);
    builder.build();

莫希特差一点就得了。即使使用builder.build(),您也只需要创建一个配置。你还没有告诉Log4j使用它。为此,您需要使用

import org.apache.logging.log4j.core.LoggerContext;

LoggerContext loggerContext = (LoggerContext) LogManager.getContext(false);
loggerContext.setConfiguration(configuration);

在经历了所有这些之后,我不得不问,既然您可以只提供一个文件,为什么还要费心进行编程配置呢?

Mohit几乎已经拥有了它。即使使用builder.build(),您也只需要创建一个配置。你还没有告诉Log4j使用它。为此,您需要使用

import org.apache.logging.log4j.core.LoggerContext;

LoggerContext loggerContext = (LoggerContext) LogManager.getContext(false);
loggerContext.setConfiguration(configuration);

在所有这些之后,我不得不问,既然您可以只提供一个文件,为什么还要费心编程配置呢?

您的问题是什么?日志输出没有遵循我指定的模式。我甚至尝试过改变图案,但它仍然打印相同的图案。另外,我还添加了四条日志语句,其中只有两条被打印出来(ERROR和FATAL)。您的问题是什么?日志输出没有遵循我指定的模式。我甚至尝试过改变图案,但它仍然打印相同的图案。此外,我还添加了四条日志语句,其中只有两条被打印出来(ERROR和FATAL)。仍然不工作。我添加了build语句。仍然不工作。在我的情况下,配置对象应该是什么?loggerContext.setConfiguration(配置);在我的情况下,我没有设置配置/不需要。如果您不需要配置(即-您正在使用文件或使用默认配置进行配置),则这些都不是必需的。只需将log4j2.xml、log4j2.properties或log4j2.yaml放在类路径上,或者将log4j2.configurationFile属性设置为文件的位置。它是特定于项目的。那么我不理解你关于配置应该是什么的问题。这就是您正在使用生成器创建的内容。您只是没有将构建方法蛋糕化来构建它,然后将它传递给Log4J使用?loggerContext.setConfiguration(配置);在我的情况下,我没有设置配置/不需要。如果您不需要配置(即-您正在使用文件或使用默认配置进行配置),则这些都不是必需的。只需将log4j2.xml、log4j2.properties或log4j2.yaml放在类路径上,或者将log4j2.configurationFile属性设置为文件的位置。它是特定于项目的。那么我不理解你关于配置应该是什么的问题。这就是您正在使用生成器创建的内容。您只是没有将构建方法蛋糕化来构建它,然后将其传递给Log4J使用。