我使用这个插件向量插件将日志消息记录到Graylog服务器: https://github.com/gini/dropwizard-gelf
它开箱即用,只需将其添加到pom.xml并在我的dropwizard服务器的config.yml中进行配置即可。好东西!
唯一的问题是,如果由于某种原因我的Graylog服务器在启动期间不可用,GelfAppenderFactory会抛出RuntimeException并且dropwizard退出。我的网络服务器永远不会因为日志服务器不可用而启动。不好。
我有什么想法可以解决它吗?我目前的方法是将GelfAppenderFactory复制并粘贴到我自己的代码中,并将关键部分包装在try / catch块中。这感觉相当粗糙......所以任何帮助都非常感激。
答案 0 :(得分:0)
这是我在我的应用程序中使用的配置:
run(Configuration cofing, Environment env)
方法中的
// GELF Configuration
GelfAppenderFactory gelfAppenderFactory = (GelfAppenderFactory) Iterables.find(configuration.getLoggingFactory().getAppenders(), new Predicate<AppenderFactory>() {
@Override
public boolean apply(AppenderFactory input) {
return input instanceof GelfAppenderFactory;
}
}, null);
if (gelfAppenderFactory != null) {
GelfBootstrap.bootstrap(getName(), gelfAppenderFactory.getHost(), gelfAppenderFactory.getPort(), false);
Thread.currentThread().setUncaughtExceptionHandler(UncaughtExceptionHandlers.systemExit());
}// End GELF configuration
.yaml 文件中的
logging:
level: INFO
appenders:
- type: console
- type: gelf
host: graylog2
includeFullMDC: true
答案 1 :(得分:0)
为了达到我的目的,我放弃了尝试使用dropwizard-gelf。无论如何,这可能是一个好主意,因为它使用了已停产插件的过时版本(https://github.com/Moocar/logback-gelf)。
相反,我重置了dropwizard的日志记录配置,并恢复为从类路径加载logback.xml文件,如下所示:
<ul>
<li>Coffee</li>
<li>Milk</li>
<li>Milk</li>
</ul>
<ul>
<li>Coffee</li>
<li>Milk</li>
<li>Milk</li>
</ul>
<ul>
<li>Coffee</li>
<li>Milk</li>
<li>Milk</li>
</ul>
不幸的是,Dropwizard没有提供任何标准方法来重新启用Logback的标准方式(参见https://github.com/dropwizard/dropwizard/pull/567)
但是,现在我可以自由地使用(主动开发的)插件logstash-gelf(https://github.com/mp911de/logstash-gelf)和Logback配置。
感谢@pandaadb的所有帮助。最后挖掘Dropwizard的内部工作对我来说太麻烦了。