fluent / fluent/fluent-logger-java
Current Error Handling does not return false on logging errors
- Lenguaje dominante
- Java
- Estrellas
- 210
- Forks
- 86
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
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.
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Línea de trabajo
Start with RawSocketSender.java around line 204 and trace the log() path for both connection failures and exhausted buffer space. Reproduce the two failure cases described in the issue, then verify that log() reports failure instead of success when either internal operation fails. Check issue #15 for the existing error-handling context.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java
- Área
- observability
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 45/100