Log4j MongoDB застрял в таймауте после 30000мс

#java #mongodb #log4j #log4j2 #mongodb-atlas

Вопрос:

Я настроил Log4j2 для записи журналов в мой кластер Mongo Atlas (4.4.8).

Конфигурация кажется нормальной (я использую строку подключения, заданную Atlas), и журналы (консоль) сообщают, что подключение к MongoDB в порядке, база данных восстановлена правильно и коллекция восстановлена правильно.

Но затем, когда он пытается записать журнал в БД, время ожидания истекает через 30000мс, говоря:

Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[]

Я также вижу несколько сообщений, в которых говорится:

 INFO  org.mongodb.driver.cluster - Cluster description not yet available. Waiting for 30000 ms before timing out
 

Чего я не понимаю, так это того, что, используя тот же драйвер, ту же строку подключения, все операции, которые я выполняю с этим же MongoDB, самостоятельно управляя подключением (у меня есть класс MongoDBService, в котором я создаю соединение Mongo и т. Д….обычные вещи), Работают без проблем, поэтому это приводит меня к тому, что Log4j плохо обрабатывает соединение с MongoDB…

Любая помощь будет признательна!

Комментарии:

1. У меня такая же проблема даже с моим локальным контейнером mongo docker. Вы решили проблему?

2. Привет @hosseinshemshadi. Нет, похоже, никто не в состоянии помочь… Я не знаю, что происходит, и, похоже, у нас очень мало желающих использовать log4j в базе данных mongo, к сожалению…

Ответ №1:

Наконец я обнаружил проблему в своих конфигурациях. Может быть, это сработает и для тебя тоже. Я привык иметь несколько приложений в корневом регистраторе. Поэтому mongodb пытался записать что-то вроде: «эй, я собираюсь войти» после инициализации RollingFileAppender, но до mongodbAppender. Вы можете увидеть это ниже:

     Root:
  level: info
  AppenderRef:
    - ref: ConsoleAppender
    - ref: RollingFileAppender
    - ref: MongoAppender
 

Просто изменив регистратор приложения mongo, все сработало для меня.

 logger:
  - name: com.sinansoft
    level: info
    additivity: false
    AppenderRef:
      - ref: MongoAppender

Root:
  level: info
  AppenderRef:
    - ref: ConsoleAppender
    - ref: RollingFileAppender
 

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

Комментарии:

1. Ты разгадал ее!! Это сработало и для меня тоже! Таким образом, проблема заключалась в том, как, по-видимому, он инициализирует регистраторы.