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
Java 我的日志记录到哪里去了?_Java_Logging_Log4j_Slf4j - Fatal编程技术网

Java 我的日志记录到哪里去了?

Java 我的日志记录到哪里去了?,java,logging,log4j,slf4j,Java,Logging,Log4j,Slf4j,我有一个bean,它通过一个静态块实例化一个模式,以便为MyClass的每个实例加载一次。但是,我从未看到日志记录(只有在输入错误的文件路径时才看到一次,因此这是异常记录)。如果我用System.out.println()替换日志记录,它将显示在控制台中 我的项目使用SLF4J和LOG4J。我看到了这个问题:它声称LOG4J应该在执行静态块时被初始化。我的直觉是,通过使用SLF4J,这不再是保证。对吗 private static final Logger LOGGER = LoggerFact

我有一个bean,它通过一个静态块实例化一个模式,以便为MyClass的每个实例加载一次。但是,我从未看到日志记录(只有在输入错误的文件路径时才看到一次,因此这是异常记录)。如果我用
System.out.println()替换日志记录,它将显示在控制台中

我的项目使用SLF4J和LOG4J。我看到了这个问题:它声称LOG4J应该在执行静态块时被初始化。我的直觉是,通过使用SLF4J,这不再是保证。对吗

private static final Logger LOGGER = LoggerFactory.getLogger(MyClass.class);

private static Schema XSD_SCHEMA = null;

static {
    // NB The logging in this static block does not always appear in the output. It seems
    // that the indirection between SLF4J and LOG4J causes slow initialization of the logging
    // framework. 
    if (XSD_SCHEMA != null) {
        LOGGER.info("Reading schema...");
        SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
        Schema schema = null;
        try {
            schema = sf.newSchema(new File("some.xsd"));
            LOGGER.info("Read schema successfully, using validation...");
        } catch (SAXException e) {
            LOGGER.error("Could not load validation schema, not using validation (Reason {})",
                         e);
        }
        XSD_SCHEMA = schema;
    }
}

只需省略这个if语句

if (XSD_SCHEMA != null) {
事实上,它总是错误的,静态块从不执行任何有用的操作


您不需要它,因为静态块无论如何只执行一次。

如果未初始化
LOGGER
,您将得到
NullPointerException