【问题标题】:Log4j MongoDB stuck in timeout after 30000msLog4j MongoDB 在 30000 毫秒后卡在超时
【发布时间】:2021-08-19 14:08:56
【问题描述】:

我已将 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 Connection 等。 .normal 的东西)工作没有问题,所以它让我想到 Log4j 以一种糟糕的方式处理与 MongoDB 的连接......

感谢任何帮助!

【问题讨论】:

  • 即使在我的本地 mongo docker 容器上,我也遇到了同样的问题。您解决了问题吗?
  • 嗨@hosseinshemshadi。不,似乎没有人能够提供帮助...我不知道会发生什么,而且不幸的是,我们似乎很少有人愿意将 log4j 用于 mongo db...

标签: java mongodb log4j log4j2 mongodb-atlas


【解决方案1】:

最后我在我的配置中发现了问题。也许它也适合你。 我曾经在根记录器中有多个附加程序。所以 mongodb 试图在初始化 RollingFileAppender 之后但在 mongodbAppender 之前记录如下内容:“嘿,我要记录”。你可以在下面看到它:

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

只需更改 mongo appender 的记录器,一切都对我有用。

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

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

如果您需要在这种情况下获得更多配置详细信息,请告诉我。

【讨论】:

  • 你解决了!!它也对我有用!所以问题在于它初始化记录器的顺序。
猜你喜欢
  • 2020-02-18
  • 1970-01-01
  • 1970-01-01
  • 2020-02-22
  • 2020-04-02
  • 2021-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多