java - 无法从静态上下文引用非静态方法'getLogger'

Dar*_*vil 2 java logging

我正在尝试使用Java创建一个简单的日志记录应用程序log4j2.

这是它的样子:

package com.company;

import java.io.IOException;

import java.util.logging.LogManager;
import java.util.logging.Logger;


    public class Main {

       private static final Logger logger = LogManager.getLogger(Main.class);

        public static void main(String[] args) throws IOException {

            String message = "Hello there!";
            System.out.println(message);
            logger.info(message);

        }
    }
Run Code Online (Sandbox Code Playgroud)

getLogger 索赔时出错:

 Non-static method 'getLogger' cannot be referenced from a static context
Run Code Online (Sandbox Code Playgroud)

我已经在这个论坛上查看了各种各样的主题,但它们似乎都没有奏效.他们似乎以与我上面相同的方式宣布记录器.

我在这做错了什么?

Mic*_*ael 5

如果你正在使用log4j2那么你输入了错误的LogManagerLogger.你应该这样:

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
Run Code Online (Sandbox Code Playgroud)

您应该查看文档:https://logging.apache.org/log4j/2.x/manual/api.html

编辑:Maven

根据Apache Maven构建中使用Log4j的文档,您应该具有以下依赖项pom.xml:

<dependencies>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.11.1</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.11.1</version>
  </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)