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>

Някой запознат ли е с този проблем? Благодаря за всяка помощ.


person Felix    schedule 21.10.2014    source източник


Отговори (2)


Изглежда, че има проблем или със зависимостите, или log4j има някакъв друг проблем при зареждане или инициализиране на приставката за добавяне на GELF. Може да е добра идея да споменете вашите точни зависимости, както за log4j2, така и за log4j2-gelf. (В противен случай трябва да гадаем...)

Освен това опитайте да зададете изход за състояние, с който да проследявате

<configuration status="trace" ...

и погледнете вътрешните съобщения в журнала на log4j, които се показват на конзолата. Това би трябвало да ви даде някаква представа какво не е наред. Надяваме се, че в този резултат има ясно съобщение на ниво ГРЕШКА, което ни казва какъв е проблемът.

person Remko Popma    schedule 22.10.2014

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

Първо поставям името на пакета, който съдържа GELF-добавката, във файла 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>

Then I got this error: "This code should have never made it into slf4j-api.jar"

Не използвах Maven на първо място, за да получа всички необходими пакети. Така че използвах Maven и това ми даде намек, че импортираните slf4j-api .java-файлове не са очакваните. Ако изтеглите официалната дистрибуция на SLF4J, внимавайте кои файлове импортирате. На първо място, импортирах java файловете от папката "slf4j-api" - но тази папка съдържа папката "impl", която причини грешката, която споменах по-горе. Така че импортирах sl4j-api-1.7.7.jar, който също е в официалната дистрибуция на SLF4J (този буркан не съдържа "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.
person Felix    schedule 23.10.2014