如何使用 console appender
配置 log4j 2.3
纯编程(没有任何格式的配置文件)?
基本上我正在寻找 1.x code 的 2.x 版本.
然后我会在我的类(class)中使用
private static final Logger logger = LogManager.getLogger();
//
// some method
logger.debug(someString);
没有任何配置我(如预期)面临
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
虽然配置文件的使用似乎是 properly documented ,我找不到一个简单的纯代码案例的好例子。
我得到的最接近的是 this article仍然使用虚拟文件。
这是我最好的(虽然完全不成功)的镜头:
private static void configureLog4J() {
PatternLayout layout = PatternLayout.createDefaultLayout();
ConsoleAppender appender = ConsoleAppender.createDefaultAppenderForLayout(layout);
LoggerConfig loggerConfig = new LoggerConfig();
loggerConfig.addAppender(appender, DEBUG, null);
}
我错过了什么吗?
如果仍然是 RTFM 案例,请指出正确的方向。
最佳答案
package com;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.appender.ConsoleAppender;
import org.apache.logging.log4j.core.config.AppenderRef;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.LoggerConfig;
import org.apache.logging.log4j.core.layout.PatternLayout;
import java.nio.charset.Charset;
public class MyLoggerTest {
public static void main(String[] args){
LoggerContext context= (LoggerContext) LogManager.getContext();
Configuration config= context.getConfiguration();
PatternLayout layout= PatternLayout.createLayout("%m%n", null, null, Charset.defaultCharset(),false,false,null,null);
Appender appender=ConsoleAppender.createAppender(layout, null, null, "CONSOLE_APPENDER", null, null);
appender.start();
AppenderRef ref= AppenderRef.createAppenderRef("CONSOLE_APPENDER",null,null);
AppenderRef[] refs = new AppenderRef[] {ref};
LoggerConfig loggerConfig= LoggerConfig.createLogger("false", Level.INFO,"CONSOLE_LOGGER","com",refs,null,null,null);
loggerConfig.addAppender(appender,null,null);
config.addAppender(appender);
config.addLogger("com", loggerConfig);
context.updateLoggers(config);
Logger logger=LogManager.getContext().getLogger("com");
logger.info("HELLO_WORLD");
}
}
不确定这是否是您要查找的内容。这将创建一个默认配置并添加一个控制台记录器。但是,LogManager.getLogger() 不起作用,并且使用 LogManager.getContext().getLogger() 不允许记录器层次结构。老实说我不推荐编程方法,Log4j2 对它过敏。
关于java - 如何纯粹以编程方式配置 log4j 2.x?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30881990/