Dropwizard GELF记录appender

时间:2016-03-18 15:40:28

标签: java dropwizard graylog

我使用这个插件向量插件将日志消息记录到Graylog服务器: https://github.com/gini/dropwizard-gelf

它开箱即用,只需将其添加到pom.xml并在我的dropwizard服务器的config.yml中进行配置即可。好东西!

唯一的问题是,如果由于某种原因我的Graylog服务器在启动期间不可用,GelfAppenderFactory会抛出RuntimeException并且dropwizard退出。我的网络服务器永远不会因为日志服务器不可用而启动。不好。

我有什么想法可以解决它吗?我目前的方法是将GelfAppenderFactory复制并粘贴到我自己的代码中,并将关键部分包装在try / catch块中。这感觉相当粗糙......所以任何帮助都非常感激。

2 个答案:

答案 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的内部工作对我来说太麻烦了。