https://github.com/gini/dropwizard-gelf
Addon bundle for Dropwizard to support logging to a GELF-enabled server like Graylog or logstash
https://github.com/gini/dropwizard-gelf
Last synced: 6 months ago
JSON representation
Addon bundle for Dropwizard to support logging to a GELF-enabled server like Graylog or logstash
- Host: GitHub
- URL: https://github.com/gini/dropwizard-gelf
- Owner: gini
- License: apache-2.0
- Archived: true
- Created: 2012-12-02T20:14:09.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2022-10-13T02:01:54.000Z (over 3 years ago)
- Last Synced: 2025-07-22T10:45:13.823Z (11 months ago)
- Language: Java
- Homepage: http://developer.gini.net/dropwizard-gelf/1.3.0-1/
- Size: 1.95 MB
- Stars: 52
- Watchers: 5
- Forks: 22
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-dropwizard - dropwizard-gelf - Addon bundle for Dropwizard to support logging to a GELF-enabled servers (Open Source / Logging)
README
Dropwizard GELF
===============
[](https://travis-ci.org/gini/dropwizard-gelf)
[](https://coveralls.io/r/gini/dropwizard-gelf)
[](http://mvnrepository.com/artifact/net.gini.dropwizard/dropwizard-gelf)
Addon for Dropwizard adding support for logging to a GELF-enabled server such as [Graylog](https://www.graylog.org/)
or [logstash](http://logstash.net/) using [logstash-gelf](http://logging.paluch.biz/).
Usage
-----
The Dropwizard GELF provides an `AppenderFactory` which is automatically registered in Dropwizard and will send log
messages directly to your configured GELF-enabled server.
Logging startup errors to Graylog
---------------------------------
In order to log startup errors (i. e. before the `GelfAppenderFactory` has been properly initialized) to a GELF-enabled
server, the Dropwizard application has to run `GelfBootstrap.bootstrap()` in its `main` method and set a custom
`UncaughtExceptionHandler` for the main thread.
public static void main(String[] args) throws Exception {
GelfBootstrap.bootstrap(NAME, GELF_HOST, GELF_PORT, false);
Thread.currentThread().setUncaughtExceptionHandler(
UncaughtExceptionHandlers.loggingSystemExitBuilder(NAME, GELF_HOST)
.port(GELF_PORT)
.build());
new MyDropwizardApplication().run(args);
}
Configuration
-------------
The Logback GELF appender can be configured using the provided `GelfConfiguration` class which basically mirrors the
appender configuration outlined in the [logstash-gelf documentation](http://logging.paluch.biz/examples/logback.html).
Your YAML configuration could include the following snippet to configure the `GelfLoggingBundle`:
```
appenders:
- type: console
- type: gelf
host: udp:graylog.example.com
# port: 12201
# facility: MyApplication
# threshold: ALL
# originHost: my-shiny-host
extractStackTrace: true
filterStackTrace: true
includeFullMDC: true
includeLocation: true
additionalFields:
data_center: DC01
rack: R5C2
inception_year: 2016
additionalFieldTypes:
inception_year: long
request_id: long
```
Configuration settings
----------------------
| Setting | Default | Description |
| ---------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `enabled` | `true` | Specify if logging to a GELF-compatible server should be enabled. |
| `facility` | [application name] | The name of the application. Appears in the `facility` column in the Graylog web interface. |
| `host` | [empty] | Hostname/IP-Address of the GELF-compatible server, see [host specification](#host-specification). |
| `port` | `12201` | Port of the GELF-compatible server. |
| `originHost` | [FQDN hostname] | Originating hostname. |
| `extractStackTrace` | `false` | Send the stack-trace to the StackTrace field. |
| `filterStackTrace` | `false` | Perform stack-trace filtering, see [Stack Trace Filter]. |
| `mdcProfiling` | `false` | Perform Profiling (Call-Duration) based on [MDC] Data. See [MDC Profiling] for details. |
| `additionalFields` | [empty] | Map of additional static fields. |
| `additionalFieldTypes` | [empty] | Map of type specifications for additional and [MDC] fields. See [Additional field types](#additional-field-types) for details. |
| `mdcFields` | [empty] | List of additional fields whose values are obtained from [MDC]. |
| `dynamicMdcFields` | [empty] | Dynamic MDC Fields allows you to extract [MDC] values based on one or more regular expressions. The name of the MDC entry is used as GELF field name. |
| `includeFullMdc` | `false` | Include all fields from the [MDC]. |
| `includeLocation` | `true` | Include source code location. |
| `maximumMessageSize` | `8192` | Maximum message size (in bytes). If the message size is exceeded, the appender will submit the message in multiple chunks (UDP only). |
| `timestampPattern` | `yyyy-MM-dd HH:mm:ss,SSSS` | Date/time pattern for the time field. |
[MDC]: http://logback.qos.ch/manual/mdc.html
[MDC Profiling]: http://logging.paluch.biz/mdcprofiling.html
[Stack Trace Filter]: http://logging.paluch.biz/stack-trace-filter.html
### Host specification
* `udp:hostname` for UDP transport, e. g. `udp:127.0.0.1, `udp:some.host.com` or just `some.host.com`.
* `tcp:hostname` for TCP transport, e. g. `tcp:127.0.0.1` or `tcp:some.host.com`. See [TCP transport for logstash-gelf] for details.
* `ssl:hostname` for TCP+SSL transport, e. g. `ssl:127.0.0.1` or `ssl:some.host.com`. See [TCP transport for logstash-gelf] for details.
* `redis://[:password@]hostname:port/db-number#listname` for Redis transport. See [Redis transport for logstash-gelf] for details.
* `redis-sentinel://[:password@]hostname:port/db-number?masterId=masterId#listname` for Redis transport with Sentinel lookup. See [Redis transport for logstash-gelf] for details.
* `http://host[:port]/[path]` for HTTP transport, e. g. `https://127.0.0.1/gelf`. See [HTTP transport for logstash-gelf] for details.
[TCP transport for logstash-gelf]: http://logging.paluch.biz/tcp.html
[Redis transport for logstash-gelf]: http://logging.paluch.biz/redis.html
[HTTP transport for logstash-gelf]: http://logging.paluch.biz/http.html
### Additional field types
Supported types: `String`, `long`, `Long`, `double`, `Double` and `discover` (default if not specified).
Maven Artifacts
---------------
This project is available on Maven Central. To add it to your project simply add the following dependencies to your POM:
net.gini.dropwizard
dropwizard-gelf
1.3.0-1
Support
-------
Please file bug reports and feature requests in [GitHub issues](https://github.com/gini/dropwizard-gelf/issues).
Acknowledgements
----------------
Thanks to Nick Telford for his [initial version](https://gist.github.com/dd5e000c3327484540a8) of the `GraylogBundle`.
Contributors
------------
* [Daniel Scott](https://github.com/danieljamesscott)
* [Michal Svab](https://github.com/msvab)
* [Christian Rigdon](https://github.com/Oakie3CR)
* [Patrick Brückner](https://github.com/madmuffin1)
License
-------
Copyright (c) 2012-2013 smarchive GmbH, 2013-2018 Gini GmbH, 2015-2018 Jochen Schalanda
This library is licensed under the Apache License, Version 2.0.
See http://www.apache.org/licenses/LICENSE-2.0.html or the [LICENSE](LICENSE) file in this repository for the full license text.