Предотвратить ведение журнала stacktrace для плохой точки контакта Cassandra

Когда моей клиентской программе Cassandra, которая использует драйвер Datastax Java, дается недопустимая точка контакта (имя хоста компьютера, на котором фактически не запущен демон Cassandra), драйвер сам регистрирует трассировку стека. Однако stacktrace бесполезен, поскольку это ошибка конфигурации, а не ошибка, и ей предшествует гораздо более информативное предупреждающее сообщение.

Как я могу настроить драйвер Cassandra, чтобы в этом случае не генерировалось исключение, или настроить logback not для протоколирования трассировки стека?

Вот шумные сообщения журнала, которые я получаю в настоящее время:

2015-05-07 13:55:22,758 my-program: WARN You listed test-host-2.example.com/172.16.12.202:9042 in your contact points, but it could not be reached at startup
2015-05-07 13:55:22,919 my-program: WARN Some contact points don't match specified local data center. Local DC = DC1. Non-conforming contact points: /172.16.12.204:9042 (DC2)
2015-05-07 13:55:28,105 my-program: ERROR Error creating pool to test-host-2.example.com/172.16.12.202:9042
com.datastax.driver.core.TransportException: [test-host-2.example.com/172.16.12.202:9042] Cannot connect
    at com.datastax.driver.core.Connection.(Connection.java:106) ~[my-program-1.0.0.1.jar:1.0.0.1]
    at com.datastax.driver.core.PooledConnection.(PooledConnection.java:32) ~[my-program-1.0.0.1.jar:1.0.0.1]
    at com.datastax.driver.core.Connection$Factory.open(Connection.java:521) ~[my-program-1.0.0.1.jar:1.0.0.1]
    at com.datastax.driver.core.SingleConnectionPool.(SingleConnectionPool.java:76) ~[my-program-1.0.0.1.jar:1.0.0.1]
    at com.datastax.driver.core.HostConnectionPool.newInstance(HostConnectionPool.java:35) ~[my-program-1.0.0.1.jar:1.0.0.1]
    at com.datastax.driver.core.SessionManager.replacePool(SessionManager.java:239) ~[my-program-1.0.0.1.jar:1.0.0.1]
    at com.datastax.driver.core.SessionManager.access$400(SessionManager.java:39) ~[my-program-1.0.0.1.jar:1.0.0.1]
    at com.datastax.driver.core.SessionManager$3.call(SessionManager.java:272) [my-program-1.0.0.1.jar:1.0.0.1]
    at com.datastax.driver.core.SessionManager$3.call(SessionManager.java:264) [my-program-1.0.0.1.jar:1.0.0.1]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_75]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_75]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_75]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_75]
Caused by: org.jboss.netty.channel.ConnectTimeoutException: connection timed out: test-host-2.example.com/172.16.12.202:9042
    at org.jboss.netty.channel.socket.nio.NioClientBoss.processConnectTimeout(NioClientBoss.java:137) ~[my-program-1.0.0.1.jar:1.0.0.1]
    at org.jboss.netty.channel.socket.nio.NioClientBoss.process(NioClientBoss.java:83) ~[my-program-1.0.0.1.jar:1.0.0.1]
    at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318) ~[my-program-1.0.0.1.jar:1.0.0.1]
    at org.jboss.netty.channel.socket.nio.NioClientBoss.run(NioClientBoss.java:42) ~[my-program-1.0.0.1.jar:1.0.0.1]
    ... 3 common frames omitted

person Raedwald    schedule 07.05.2015    source источник


Ответы (2)


Это похоже на запрос функции. Не стесняйтесь создавать jira - https://datastax-oss.atlassian.net/secure/Dashboard.jspa

Вы можете отключить ведение журнала, но я не думаю, что вы хотите исключать ОШИБКИ или тайм-ауты соединения.

Вас просто беспокоят ОШИБКИ в логах? Может быть полезно знать, когда у вас отключены узлы, которые являются точками контакта ...

person phact    schedule 07.05.2015

В общем случае имеет смысл показать трассировку стека, это может быть другая ошибка (например, на сервере работает Cassandra, но аутентификация включена, и вы не предоставляете правильные учетные данные).

Если вы действительно хотите подавить трассировку стека в Logback, это, очевидно, возможно с помощью настраиваемого макета .

person Olivier Michallat    schedule 12.05.2015
comment
В общем случае имеет смысл показывать № трассировки стека, это имеет смысл только для логических ошибок в программе. Не для сетевых проблем или ошибок конфигурации. - person Raedwald; 12.05.2015