fluent / fluent/fluent-logger-java
Current Error Handling does not return false on logging errors
- Vorherrschende Sprache
- Java
- Sterne
- 210
- Forks
- 86
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
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.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginne bei RawSocketSender.java ungefähr in Zeile 204 und verfolge den log()-Pfad sowohl für Verbindungsfehler als auch für erschöpften Pufferspeicher. Reproduziere die beiden im Issue beschriebenen Fehlerfälle und überprüfe anschließend, dass log() einen Fehler statt eines Erfolgs meldet, wenn eine der beiden internen Operationen fehlschlägt. Siehe Issue #15 für den bestehenden Kontext der Fehlerbehandlung.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java
- Bereich
- observability
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100