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