log4j2-gelf "ОШИБКИ StatusLogger appenders содержит недопустимый элемент или атрибут"GELF" "

Я только начал заходить в Graylog2 и хотел войти в некоторые Java-приложения через GELF Input. Поэтому я использовал библиотеку log4j2 и добавил graylog2-gelfclient. Все зависимости удовлетворены, и программа работает. Но инициализация моего Logmanager вызывает следующую ошибку:

ERROR StatusLogger appenders contains an invalid element or attribute "GELF"

Мой код просто регистрирует ошибку в регистраторе:

static final Logger logger = LogManager.getLogger(Application.class); 
    public static void main(String[] args) {
        logger.error("This is an error log entry");
    }
}

и мой файл log4j2.xml настроен на использование GELF и GelfAppender:

<configuration status="OFF">
    <appenders>
        <GELF name="gelfAppender" server="192.168.1.1" port="12201" hostName="myhost"/>
    </appenders>
    <loggers>
        <root level="info">
            <appender-ref ref="gelfAppender"/>
        </root>
    </loggers>
</configuration>

Кто-нибудь знаком с этой проблемой? Спасибо за любую помощь.

2 ответа

Похоже, что есть проблема либо с зависимостями, либо у log4j есть другие проблемы с загрузкой или инициализацией плагина appender GELF. Хорошей идеей будет упомянуть ваши точные зависимости как для log4j2, так и для log4j2-gelf. (В противном случае мы должны угадать...)

Кроме того, попробуйте настроить вывод состояния для трассировки

<configuration status="trace" ...

и взгляните на сообщения журнала log4j, которые отображаются на консоли. Это должно дать вам некоторое представление о том, что происходит не так. Надеемся, что в этом выводе есть четкое сообщение об ОШИБКЕ, которое говорит нам, в чем проблема.

Просто удалось решить проблему:)

Прежде всего, я поместил имя пакета, содержащего GELF-appender, в файл log4j2.xml.

<configuration status="OFF" packages="org.graylog2.log4j2">
   <appenders>
      <GELF name="gelfAppender" server="192.168.1.1" port="12202" hostName="myhost"></GELF>
   </appenders>
   <loggers>
      <root level="info">
         <AppenderRef ref="gelfAppender"/>
      </root>
   </loggers>

Затем я получил эту ошибку: "Этот код никогда не должен был превращаться в slf4j-api.jar"

Я не использовал Maven, чтобы получить все необходимые пакеты. Поэтому я использовал Maven, и это подсказало мне, что импортированные файлы.java-файлов slf4j-api не соответствуют ожидаемым. Если вы загружаете официальный дистрибутив SLF4J, будьте осторожны, какие файлы вы импортируете. Во-первых, я импортировал файлы java из папки "slf4j-api", но в этой папке содержится папка "impl", которая вызвала ошибку, о которой я упоминал выше. Поэтому я импортировал файл sl4j-api-1.7.7.jar, который также находится в официальном дистрибутиве SLF4J (этот jar-файл не содержит "impl"-пакет), и теперь он работает нормально.

Примечание: я получил это сообщение при запуске программы:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Другие вопросы по тегам