在main方法中初始化log4j的最短方法是什么?

whhtz7ly  于 2022-11-06  发布在  其他
关注(0)|答案(6)|浏览(152)

我希望将所有内容都记录到控制台,而不希望必须创建log4j.xml文件等。我正在对一些库进行原型化,并希望看到它们的完整日志输出。
我希望尽可能地保持它的纯净,而不必引入不必要的依赖项,如Spring等。

yv5phkfx

yv5phkfx1#

我使用以下代码:

Logger.getRootLogger().setLevel(Level.ALL);
Layout layout = new PatternLayout("%d [%t] %-5p %c %x - %m%n");
Logger.getRootLogger().addAppender(new ConsoleAppender(layout));
gstyhher

gstyhher2#

如果您不想完全使用配置文件,可以使用几行代码进行简单的配置,如下所示:

Properties props = new Properties();
props.setProperty("log4j.appender.CONSOLE",org.apache.log4j.ConsoleAppender");
props.setProperty("log4j.appender.CONSOLE.Threshold", "TRACE");
props.setProperty("log4j.appender.CONSOLE.layout,"org.apache.log4j.PatternLayout");
props.setProperty("log4j.appender.CONSOLE.layout.ConversionPattern","%-5p %d{HH:mm:ss} %-30C{1} | %m%n);"
props.setProperty("log4j.rootLogger", "TRACE, CONSOLE");
PropertyConfigurator.configure(props);
4c8rllxm

4c8rllxm3#

看起来这个很管用。

import org.apache.log4j.BasicConfigurator;

public class Main {

    private static void initializeLogger() {
        BasicConfigurator.configure();
    }

    public static void main(String args[]) {
        Main.initializeLogger();
    }
}
of1yzvn4

of1yzvn44#

最简单的方法是将以下代码放到类路径根目录(即源文件夹或资源文件夹)下的文件log4j.properties中:

log4j.rootLogger=info, A1

# A1 is set to be a ConsoleAppender.

log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.

log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%p] %c{2} %m%n
bpzcxfmw

bpzcxfmw5#

您可以使用所需的值建立Properties集合,并将其传递给PropertyConfigurator.configure(Properties)方法。

8yoxcaq7

8yoxcaq76#

十多年后,我发现自己也在问同样的问题。
当使用log4j2作为日志记录框架时,这似乎可以达到目的:

static {
    ConfigurationBuilder<?> builder = ConfigurationBuilderFactory.newConfigurationBuilder();
    AppenderComponentBuilder console = builder.newAppender("stdout", "Console");
    builder.add(console);

    RootLoggerComponentBuilder rootLogger = builder.newRootLogger(Level.ALL);
    rootLogger.add(builder.newAppenderRef("stdout"));
    builder.add(rootLogger);

    Configurator.initialize(builder.build());
}

使用这些导入

import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.config.Configurator;
import org.apache.logging.log4j.core.config.builder.api.AppenderComponentBuilder;
import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilder;
import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory;

重要附注

日志框架只能初始化一次。
第一次初始化后发生的配置将被忽略,但不会显示任何消息。

如果在执行此代码之前配置了日志框架,则此代码将无效。

因此,如果您的类具有静态Logger字段,则应在静态配置块下面定义该字段。

static {
    // configuration here
}

// loggers should be assigned after the custom configuration
// otherwise they trigger default configuration
private static final Logger logger = LogManager.getLogger();

相关问题