0
上下文:运行在Tomcat中的Java Web应用程序,Log4j 2版本2.5。日志设置使用Raven connector和一个ELK(ElasticSearch + Logstash + Kibana)实例转到一个Sentry实例。Log4j的断路器2
配置看起来像这样(匿名):
<configuration>
<appenders>
<Raven name="Sentry">
<dsn>https://[email protected]/1</dsn>
</Raven>
<Socket name="Logstash" host="1.2.3.4" port="1234">
<SerializedLayout />
</Socket>
</appenders>
<loggers>
<root level="info">
<appender-ref ref="Sentry" level="warn" />
<appender-ref ref="Logstash" />
</root>
</loggers>
</configuration>
问题是,如果哨兵或ELK开始演戏了(响应时间长,可达,...),应用程序线程被阻塞尝试登录和应用程序有效地死亡。
是否有解决此问题的首选方案?某种断路器在这里是理想的:在检测到远程日志记录目的地Log4j 2的问题后,会暂停该appender一段时间。
我们使用另一个appender包装在<Async/>
appender,但据我所知,这是一个很好的解决方案,使日志记录...以及异步,但不是解决无响应日志目标的问题。
值得注意的是,Sentry appender本身默认是完全异步的,所以它不应该备份你的记录器。 – Brett
@Brett你能否澄清一下你的意思是哪个Sentry appender?我仍然使用旧的Raven appender,我知道我应该升级到Sentry,正如https://docs.sentry.io/clients/java/ – vektor
中所提到的,即使使用传统的“raven-java”客户端,我们也默认为非常长时间的异步连接。你有没有证据表明哨兵延误会减慢你的采伐速度?他们绝对不应该 - 这将是一个错误。如果您有任何信息,请在Github上提出问题。谢谢! – Brett