fluent / fluent/fluent-logger-java

Current Error Handling does not return false on logging errors

オープン
#66 コメント 3 件 リアクション 1 件 担当者 0 名 GitHub で見る
主要言語
Java
スター
210
フォーク
86
PR マージ指標
30日以内にマージされた PR はありません

説明

There are two types of errors I've run into:

1. Network Errors:
Here I created an app to log to a remote Fluentd instance.
`private static final FluentLogger LOG = FluentLogger.getLogger("audit", "10.0.0.1", 22224);`
However, I forgot to start the remote Fluentd instance before running the app, so I got Network Errors
`
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.fluentd.logger.sender.RawSocketSender.connect(RawSocketSender.java:85)
at org.fluentd.logger.sender.RawSocketSender.reconnect(RawSocketSender.java:98)
at org.fluentd.logger.sender.RawSocketSender.flush(RawSocketSender.java:206)
at org.fluentd.logger.sender.RawSocketSender.send(RawSocketSender.java:195)
at org.fluentd.logger.sender.RawSocketSender.emit(RawSocketSender.java:157)
at org.fluentd.logger.sender.RawSocketSender.emit(RawSocketSender.java:139)
at org.fluentd.logger.sender.RawSocketSender.emit(RawSocketSender.java:134)
at org.fluentd.logger.FluentLogger.log(FluentLogger.java:101)
at org.fluentd.logger.FluentLogger.log(FluentLogger.java:86)
at LoggerInfra.log(FluentdLoggerApp.java:27)
at LoggerCaller.testLogger(FluentdLoggerApp.java:79)
at FluentdLoggerApp.main(FluentdLoggerApp.java:112)
`

There error was printed to console (expected because of limited error handling #15), but the `log()` call returned `true` instead of `false` which hid the internal failure.
Result of logic in [RawSocketSender.java#L204](https://github.com/fluent/fluent-logger-java/blob/master/src/main/java/org/fluentd/logger/sender/RawSocketSender.java#L204) which simple logs the error message to `LOG.error()`.

2. A second error is that I ran out of buffer space. In this setup I had my app logging to a local Fluentd instance and buffering to file. The local instance then forwards the logs to a remote instance. However the remote instance was not running, so the local buffer space eventually got filled up. Again the `log()` call returned true and the stack trace was printed out to terminal.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。