Java Mongodb driver keep logging

Dear mn,
Có ai từng gặp trường hợp này chưa ạ. Java MongoDB driver liên tục log ra rất nhiều message. Mình đã thử cách logger.setLevel(Level.WARN); hoặc setLevel OFF rồi mà không thành công.
Ai từng gặp rồi chỉ giúp mình với. Mình cảm ơn.

2021-04-01 20:31:53.536 DEBUG 16428 --- [x.xxx.xxx:35000] org.mongodb.driver.cluster               : Checking status of xxx.xxx.xxx.xxx:35000
2021-04-01 20:31:53.536 DEBUG 16428 --- [x.xxx.xxx:35000] org.mongodb.driver.cluster               : Checking status of xxx.xxx.xxx.xxx:35000
2021-04-01 20:31:53.536 DEBUG 16428 --- [x.xxx.xxx:35000] org.mongodb.driver.cluster               : Checking status of xxx.xxx.xxx.xxx:35000
2021-04-01 20:31:53.536 DEBUG 16428 --- [x.xxx.xxx:35000] org.mongodb.driver.cluster               : Checking status of xxx.xxx.xxx.xxx:35000
2021-04-01 20:31:53.545 DEBUG 16428 --- [x.xxx.xxx:35000] org.mongodb.driver.protocol.command      : Execution of command with request id 31670 completed successfully in 6.55 ms on connection [connectionId{localValue:83, serverValue:187601}] to server xxx.xxx.xxx.xxx:35000
2021-04-01 20:31:53.546 DEBUG 16428 --- [x.xxx.xxx:35000] org.mongodb.driver.cluster               : Updating cluster description to  {type=STANDALONE, servers=[{address=xxx.xxx.xxx.xxx:35000, type=STANDALONE, roundTripTime=6.2 ms, state=CONNECTED}]
2021-04-01 20:31:53.547 DEBUG 16428 --- [x.xxx.xxx:35000] org.mongodb.driver.cluster               : Updating cluster description to  {type=STANDALONE, servers=[{address=xxx.xxx.xxx.xxx:35000, type=STANDALONE, roundTripTime=5.8 ms, state=CONNECTED}]
2021-04-01 20:31:53.548 DEBUG 16428 --- [x.xxx.xxx:35000] org.mongodb.driver.cluster               : Updating cluster description to  {type=STANDALONE, servers=[{address=xxx.xxx.xxx.xxx:35000, type=STANDALONE, roundTripTime=6.9 ms, state=CONNECTED}]
2021-04-01 20:31:53.582 DEBUG 16428 --- [x.xxx.xxx:35000] org.mongodb.driver.cluster               : Checking status of xxx.xxx.xxx.xxx:35000
2021-04-01 20:31:53.582 DEBUG 16428 --- [x.xxx.xxx:35000] org.mongodb.driver.protocol.command      : Sending command '{"ismaster": 1}' with request id 31671 to database admin on connection [connectionId{localValue:139, serverValue:187745}] to server xxx.xxx.xxx.xxx:35000
2021-04-01 20:31:53.585 DEBUG 16428 --- [x.xxx.xxx:35000] org.mongodb.driver.protocol.command      : Execution of command with request id 31671 completed successfully in 3.06 ms on connection [connectionId{localValue:139, serverValue:187745}] to server xxx.xxx.xxx.xxx:35000
2021-04-01 20:31:53.586 DEBUG 16428 --- [x.xxx.xxx:35000] org.mongodb.driver.cluster               : Updating cluster description to  {type=STANDALONE, servers=[{address=xxx.xxx.xxx.xxx:35000, type=STANDALONE, roundTripTime=5.6 ms, state=CONNECTED}]

Có lẽ cậu đang set log level của package org.mongodb.driverDEBUG, vậy nên cậu nhận được toàn bộ log debug từ package này.
Thường, log setting sẽ được mô tả ở file logback.xml. Cậu thử đọc file đó và thay đổi log level của package kia cho phù hợp xem.

Nếu cậu vẫn gặp rắc rối, cậu có thể cho bọn tớ xem file logback.xml được không?

3 Likes

Dear Lib
Đây là file logback của mình, nó ko có config cho mongodb.driver và mình cũng đã thử set vào nhưng vẫn không thành công

<!DOCTYPE configuration>

<configuration scan="true">
    <include resource="org/springframework/boot/logging/logback/base.xml"/>

    <logger name="appName" level="INFO"/>

    <logger name="io.github.jhipster" level="WARN"/>

    <logger name="javax.activation" level="WARN"/>
    <logger name="javax.mail" level="WARN"/>
    <logger name="javax.xml.bind" level="WARN"/>
    <logger name="ch.qos.logback" level="WARN"/>
    <logger name="com.ryantenney" level="WARN"/>
    <logger name="com.sun" level="WARN"/>
    <logger name="com.zaxxer" level="WARN"/>
    <logger name="com.github.dockerjava" level="WARN"/>
    <logger name="org.testcontainers" level="WARN"/>
    <logger name="io.undertow" level="WARN"/>
    <logger name="io.undertow.websockets.jsr" level="ERROR"/>
    <logger name="org.apache" level="WARN"/>
    <logger name="org.apache.catalina.startup.DigesterFactory" level="OFF"/>
    <logger name="org.bson" level="WARN"/>
    <logger name="org.hibernate.validator" level="WARN"/>
    <logger name="org.hibernate" level="WARN"/>
    <logger name="org.hibernate.ejb.HibernatePersistence" level="OFF"/>
    <logger name="org.springframework" level="WARN"/>
    <logger name="org.springframework.web" level="WARN"/>
    <logger name="org.springframework.security" level="WARN"/>
    <logger name="org.springframework.cache" level="WARN"/>
    <logger name="org.thymeleaf" level="WARN"/>
    <logger name="org.xnio" level="WARN"/>
    <logger name="springfox" level="WARN"/>
    <logger name="sun.rmi" level="WARN"/>
    <logger name="liquibase" level="WARN"/>
    <logger name="LiquibaseSchemaResolver" level="INFO"/>
    <logger name="sun.rmi.transport" level="WARN"/>
    <logger name="com.tngtech.archunit.core.importer" level="ERROR"/>

    <logger name="org.mongodb.driver.cluster" level="WARN"/>

    <root>
        <level>WARN</level>
        <appender-ref ref="CONSOLE"/>
    </root>

</configuration>
1 Like

Có vẻ như logback của cậu không có vấn đề gì.
Việc tìm hiểu nguyên nhân vấn đề này sẽ hơi phức tạp một tí, nên cậu kiên nhẫn nhé! :smile:
Cậu thử làm các bước này xem:

  • Clean và rebuild lại project của cậu, và chạy lại project. Điều đó giúp cậu chắc chắn cậu đang chạy version mới nhất.
    Khi chạy chương trình, cậu sẽ có một loạt log, trong đó ghi những config được load lên. Cậu thử tìm xem file nào đã được load lên (để xác nhận cậu đã load đúng file config), và xem nếu package “org.mongodb” được set với log level nào.
  • Tớ đang nghi ngờ trong code của cậu, có chỗ nào đó overwrite lại log level của package của cậu. Có lẽ cậu nên debug method Logger#setLevel, để kiểm tra xem có ai set nó in runtime trong code của cậu.

Thử làm theo và cho tớ biết nếu nó có ích gì không nhé! :smile:

1 Like

Java có sử dụng FW gì không?

FW là viết tắt của cái gì ạ?

framework (SpringBoot/SpringMVC/Struts…)

1 Like

Đây là project Jhipster Spring boot + Angular ạ. Mà mình nghĩ nguyên do không phải từ framework, framework ko liên quan lắm, chắc hẳn là một config hay một cái gì đó chặn config hay ghi đè config thôi

Cái appplication.yml đang config log như thế nào?

1 Like

Mấy cái này có thể được log từ hikaripool nêu đang dùng nó. chỉnh lai trong yml như sau nếu tớ đoán đúng:

logging:
  level:
    com:
      zaxxer: INFO
    root: ERROR
    

Vấn đề là nếu ko gọi connect thì sẽ không ghi log, nếu nó ghi log liên tục như vậy thì đang có 1 thread ngầm nào đó đang chạy liên tục.

3 Likes

Cảm ơn Lib, có vẻ như nó thành công rồi. Project của mình có tới 2 file là logback.xml và logback-spring.xml. Mình đã thêm config cho Mongo driver ở cả 2 file này sau đó build lại project. Ban đầu mình không build lại project mà run luôn nên nó chưa update config. Bây h nó không log ra message không cần thiết nữa.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?