Создание пользовательских уровней журнала в apache log4j в коде Java, подпись метода Logger.log () отличается от официальной документации - PullRequest
0 голосов
/ 26 мая 2020

Я ответил на этот вопрос:

как добавить пользовательский уровень ведения журнала в log4j

, а также официальную документацию log4j здесь:

https://logging.apache.org/log4j/2.x/manual/customloglevels.html

У меня нет log4j. xml в моем коде, и я пытаюсь реализовать его в самом коде Java. Однако при этом я сталкиваюсь с проблемой, когда подпись метода Logger.log () отличается от того, что написано.

Согласно документации, если я напишу этот фрагмент кода, я получит настраиваемый уровень журнала, который я смогу использовать в других частях моего кода:

final Level CUSTOM = Level.forName("CUSTOM", 550);

final Logger logger = LogManager.getLogger();
logger.log(CUSTOM, "a custom message");

Согласно Javadocs (https://logging.apache.org/log4j/2.x/log4j-api/apidocs/org/apache/logging/log4j/Logger.html), Logger.log ( ) также принимает в качестве первого аргумента объект Level. Я импортировал в свой проект следующую зависимость Maven, поскольку эта функция поддерживается только в версии 2.x:

<dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.11.1</version>
</dependency>

Я также пробовал использовать эту зависимость:

<dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>2.13.0</version>
</dependency>

Но эффект был таким же, когда я пытаюсь написать код logger.log (), Intellisense сообщает мне, что поддерживаются только версии этого метода, которые содержат объект Priority в качестве первого аргумента, а не уровень. Если я попытаюсь принудительно включить объект Level, я получу ошибку компиляции. Скажите, пожалуйста, какая зависимость Maven даст мне желаемый объект Level в качестве первого параметра метода logger.log ().

1 Ответ

1 голос
/ 26 мая 2020

Согласно это вам нужны две зависимости

<dependencies>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.13.3</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.13.3</version>
  </dependency>
</dependencies>
...