java.lang.ClassCastException: net.kencochrane.raven.log4j.SentryAppender не может быть приведен к org.apache.log4j.Appender.

Я пытаюсь использовать raven-log4j, чтобы отправить исключение вашего трека в Sentry.

/etc/youtrack/log4j.xml:

<appender name="sentry" class="net.kencochrane.raven.log4j.SentryAppender">
  <param name="dsn" value="https://publicKey:secretKey@host:port/1"/>
  <filter class="org.apache.log4j.varia.LevelRangeFilter">
    <param name="levelMin" value="WARN"/>
  </filter>
</appender>

<root>
    <priority value="INFO"/>
    <appender-ref ref="SYSLOG"/>
    <appender-ref ref="sentry"/>
</root>

Часть исходного файла выскочки:

exec java -Xmx {{heap_size}} -XX: MaxPermSize = 250m -Djava.awt.headless = true -Djetbrains.youtrack.disableBrowser = true -Djava.security.egd = / dev / zrandom -Djetbrains.mps.webr.log4jP =/etc/youtrack/log4j.xml -jar /usr/local/youtrack/{{ jarfile }} 8082

и я изменил это на:

exec java -Xmx1g -XX: MaxPermSize = 250 м -Djava.awt.headless=true -Djetbrains.youtrack.disableBrowser=true -Djava.security.egd=/dev/zrandom -Djetbrains.mps.webr.log4jPath=/etc/youtrack/log4j.xml -cp /usr/local/youtrack/youtrack-6.5.16853.jar:/usr/local/youtrack/lib/* jetbrains.youtrack.standalone.YoutrackStandalone 8082

указать путь к классу (/usr/local/youtrack/lib/*).

Без копирования raven-log4j-6.0.0.jar в /usr/local/youtrack/libЯ получу ошибку, как это:

log4j: Class name: [net.kencochrane.raven.log4j.SentryAppender]
log4j:ERROR Could not create an Appender. Reported error follows.
java.lang.ClassNotFoundException: net.kencochrane.raven.log4j.SentryAppender

но после помещения его в эту папку lib появляется другая ошибка:

log4j: Class name: [net.kencochrane.raven.log4j.SentryAppender]
log4j:ERROR Could not create an Appender. Reported error follows.
java.lang.ClassCastException: net.kencochrane.raven.log4j.SentryAppender cannot be cast to org.apache.log4j.Appender

Конечно, нет log4j-*.jar в lib папка:

ls -l /usr/local/youtrack/lib/
total 88
-rw-r--r-- 1 root root 79444 Jan  7 14:13 raven-6.0.0.jar
-rw-r--r-- 1 root root  6798 Jan  7 14:35 raven-log4j-6.0.0.jar

Почему и где он был загружен дважды?

1 ответ

Это было решено на GitHub

Стоит отметить, что вам все равно нужно будет вручную добавить дополнительные зависимости как ворон ( https://github.com/getsentry/raven-java/tree/master/raven), так и ворон -log4j ( https://github.com/getsentry/raven-java/tree/master/raven-log4j), которые еще не включены в YouTrack (например, Джексон, Гуава и т. д.), поскольку мы не собирать или не затенять эти зависимости с помощью JAR-файлов ворона. Я не думаю, что это будет причиной проблемы, хотя.

Кроме того, из того, что я мог бы сказать, log4j также дважды инициализировалось приложением (строка журнала: расположение веб-приложения Init log4j: /tmp/youtrack-example/log4j.xml.) Первый вызов всегда будет завершаться с ClassCastException, в то время как секунда не сможет инициализировать экземпляр Raven через RavenFactory (включен ниже.) Как с использованием автоматически зарегистрированной фабрики, предоставляемой ServiceLoader, так и с явной передачей фабрики того же результата.

Другие вопросы по тегам