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

Java 在主方法中初始化log4j的最短方法是什么?,java,log4j,Java,Log4j,我希望所有内容都记录到控制台上,不希望必须创建log4j.xml文件等。我正在对一些库进行原型设计,希望看到它们的完整日志输出 我希望尽可能保持它的纯粹性,而不必引入不必要的依赖项,如Spring等。看来这就成功了 import org.apache.log4j.BasicConfigurator; public class Main { private static void initializeLogger() { BasicConfigurator.config

我希望所有内容都记录到控制台上,不希望必须创建log4j.xml文件等。我正在对一些库进行原型设计,希望看到它们的完整日志输出


我希望尽可能保持它的纯粹性,而不必引入不必要的依赖项,如Spring等。

看来这就成功了

import org.apache.log4j.BasicConfigurator;

public class Main {

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

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

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


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

我使用以下方法:

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

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

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);

您可以将其内联。只需调用BasicConfigurator.configure()。我只是从未来开始防范,以防我想要一个更复杂的方案。好吧,但是静态记录器变量的名称是什么?否决,因为我特别声明我不想要log4j.xml(与属性相同),我希望有所不同-基于xml的配置要麻烦得多。“基于属性的帖子”是一篇很好理解且非常传统的帖子,在代码中做任何其他事情只会让其他开发人员更难理解你在做什么。我建议将你的帖子合并为@rsp,以使帖子更简洁、内容更丰富。@Nick。您对
log4j.xml
或等效的属性文件有何异议?你是想让人们很难定制日志记录吗?除了我之外,没有人会使用这个特定的应用程序,我也不希望控制单个日志记录者的日志级别。毫无益处地维护很麻烦(imo)
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);