{"id":22377158,"url":"https://github.com/kiwiproject/dropwizard-elk-appender","last_synced_at":"2026-06-15T01:02:42.613Z","repository":{"id":37583191,"uuid":"288462797","full_name":"kiwiproject/dropwizard-elk-appender","owner":"kiwiproject","description":"Dropwizard Logging Appender to send logging events to the ELK stack","archived":false,"fork":false,"pushed_at":"2026-06-05T03:13:25.000Z","size":485,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-06-05T03:18:07.042Z","etag":null,"topics":["dropwizard","elk-stack","java","logging"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kiwiproject.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-08-18T13:24:23.000Z","updated_at":"2026-06-05T03:14:00.000Z","dependencies_parsed_at":"2026-01-19T18:02:23.657Z","dependency_job_id":null,"html_url":"https://github.com/kiwiproject/dropwizard-elk-appender","commit_stats":null,"previous_names":[],"tags_count":49,"template":false,"template_full_name":null,"purl":"pkg:github/kiwiproject/dropwizard-elk-appender","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiwiproject%2Fdropwizard-elk-appender","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiwiproject%2Fdropwizard-elk-appender/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiwiproject%2Fdropwizard-elk-appender/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiwiproject%2Fdropwizard-elk-appender/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kiwiproject","download_url":"https://codeload.github.com/kiwiproject/dropwizard-elk-appender/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiwiproject%2Fdropwizard-elk-appender/sbom","scorecard":{"id":562120,"data":{"date":"2025-08-11","repo":{"name":"github.com/kiwiproject/dropwizard-elk-appender","commit":"52968162bbb2c6605ee0dc593e545b8724fd2e9d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.3,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":8,"reason":"10 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 8","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/16 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:24","Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:23","Warn: no topLevel permission defined: .github/workflows/build.yml:1","Warn: no topLevel permission defined: .github/workflows/codeql.yml:1","Warn: no topLevel permission defined: .github/workflows/print-delomboked-sources.yml:1","Warn: no topLevel permission defined: .github/workflows/update-license-copyright-years.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/kiwiproject/dropwizard-elk-appender/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/kiwiproject/dropwizard-elk-appender/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/kiwiproject/dropwizard-elk-appender/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/kiwiproject/dropwizard-elk-appender/build.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/kiwiproject/dropwizard-elk-appender/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/kiwiproject/dropwizard-elk-appender/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/kiwiproject/dropwizard-elk-appender/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/kiwiproject/dropwizard-elk-appender/codeql.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/codeql.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/kiwiproject/dropwizard-elk-appender/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/kiwiproject/dropwizard-elk-appender/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/kiwiproject/dropwizard-elk-appender/codeql.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/print-delomboked-sources.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/kiwiproject/dropwizard-elk-appender/print-delomboked-sources.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/print-delomboked-sources.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/kiwiproject/dropwizard-elk-appender/print-delomboked-sources.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/print-delomboked-sources.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/kiwiproject/dropwizard-elk-appender/print-delomboked-sources.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/print-delomboked-sources.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/kiwiproject/dropwizard-elk-appender/print-delomboked-sources.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/print-delomboked-sources.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/kiwiproject/dropwizard-elk-appender/print-delomboked-sources.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/update-license-copyright-years.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/kiwiproject/dropwizard-elk-appender/update-license-copyright-years.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/update-license-copyright-years.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kiwiproject/dropwizard-elk-appender/update-license-copyright-years.yml/main?enable=pin","Info:   0 out of  14 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":10,"reason":"SAST tool detected","details":["Info: SAST configuration detected: CodeQL","Info: SAST configuration detected: Sonar","Warn: 16 commits out of 17 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T14:00:54.576Z","repository_id":37583191,"created_at":"2025-08-20T14:00:54.576Z","updated_at":"2025-08-20T14:00:54.576Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34343312,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dropwizard","elk-stack","java","logging"],"created_at":"2024-12-04T22:13:00.228Z","updated_at":"2026-06-15T01:02:42.596Z","avatar_url":"https://github.com/kiwiproject.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dropwizard ELK Appender\n\n[![Build](https://github.com/kiwiproject/dropwizard-elk-appender/actions/workflows/build.yml/badge.svg?branch=main)](https://github.com/kiwiproject/dropwizard-elk-appender/actions/workflows/build.yml?query=branch%3Amain)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=kiwiproject_dropwizard-elk-appender\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=kiwiproject_dropwizard-elk-appender)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=kiwiproject_dropwizard-elk-appender\u0026metric=coverage)](https://sonarcloud.io/dashboard?id=kiwiproject_dropwizard-elk-appender)\n[![CodeQL](https://github.com/kiwiproject/dropwizard-elk-appender/actions/workflows/codeql.yml/badge.svg)](https://github.com/kiwiproject/dropwizard-elk-appender/actions/workflows/codeql.yml)\n[![javadoc](https://javadoc.io/badge2/org.kiwiproject/dropwizard-elk-appender/javadoc.svg)](https://javadoc.io/doc/org.kiwiproject/dropwizard-elk-appender)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![Maven Central](https://img.shields.io/maven-central/v/org.kiwiproject/dropwizard-elk-appender)](https://central.sonatype.com/artifact/org.kiwiproject/dropwizard-elk-appender/)\n\nDropwizard Logging Appender to send logging events to the ELK stack.\n\n## Installation\n\nInstall library with Maven:\n\n```xml\n    \u003cdependency\u003e\n        \u003cgroupId\u003eorg.kiwiproject\u003c/groupId\u003e\n        \u003cartifactId\u003edropwizard-elk-appender\u003c/artifactId\u003e\n        \u003cversion\u003e[current-version]\u003c/version\u003e\n    \u003c/dependency\u003e\n```\n\n## Running tests\n\nThe tests use [Testcontainers](https://testcontainers.com/) and require Docker.\n\nRun tests as usual:\n\n```bash\nmvn test\n```\n\nTo run the full integration tests, which start an actual Logstash server,\nyou can do:\n\n```bash\nmvn test -DfullIntegrationTests\n```\n\nNote that it can take a while (20+ seconds) to start the Logstash server container.\n\n## How to use in an application\n\nAdd to your Dropwizard configuration:\n\n```yaml\n    logging:\n      level: WARN\n      appenders:\n        - type: elk\n```\n\nThe connection details of the Logstash server must be set, and can be done by\nmanually configuring `host` and `port` or by using values provided by\n[ElkLoggerConfigProvider](https://javadoc.io/doc/org.kiwiproject/dropwizard-config-providers/latest/org/kiwiproject/config/provider/ElkLoggerConfigProvider.html).\n\nThe `customFields` property will send custom fields with every log message.\nCommon things to send are service name, version, deployment environment, etc.\nThese can either be explicitly configured or provided by `ElkLoggerConfigProvider`.\nEntries with blank keys or values are ignored when generating custom fields JSON.\n\nWhen many services all send data to the same Logstash server, it's generally\npreferred to configure using  `ElkLoggerConfigProvider` to avoid duplicating\nconfiguration in every service.\n\nIf you are relying on `ElkLoggerConfigProvider` to provide values for `host`,\n`port`, and optionally `customFields`, you can use system properties, environment variables,\nor a configuration file. See the `ElkLoggerConfigProvider`\n[documentation](https://javadoc.io/doc/org.kiwiproject/dropwizard-config-providers/latest/org/kiwiproject/config/provider/ElkLoggerConfigProvider.html)\nfor details.\n\nHowever configured, the custom fields must be JSON, for example:\n\n```json\n{ \"serviceName\": \"invoice-service\", \"serviceHost\": \"dev-svc-1.acme.com\", \"serviceEnvironment\": \"dev\" }\n```\n\nAs an example, if you wanted to use environment variables, you could do it like this in a script:\n\n```bash\n# export the environment variables\nexport KIWI_ELK_HOST=dev-logstash-1.acme.com\nexport KIWI_ELK_PORT=7003\nexport KIWI_ELK_CUSTOM_FIELDS='{ \"serviceName\": \"invoice-service\", \"serviceHost\": \"dev-svc-1.acme.com\", \"serviceEnvironment\": \"dev\" }'\n\n# start the Dropwizard application\njava -jar /opt/service/invoice-service/service.jar server /opt/service/invoice-service/config.yml\n```\n\n## Custom configuration\n\nThe properties that can be set in the Dropwizard configuration are:\n\n| Property Name     | Default | Description                                                                                                                                                                                |\n|-------------------|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| host              | null    | The logstash host. If not provided, fall back to ElkLoggerConfigProvider.                                                                                                                  |\n| port              | null    | The logstash port. If not provided, fall back to ElkLoggerConfigProvider.                                                                                                                  |\n| includeCallerData | false   | Whether the caller data is included in the message to logstash                                                                                                                             |\n| includeContext    | true    | Whether to include the logging context in the message to logstash                                                                                                                          |\n| includeMdc        | true    | Whether to include the MDC in the message to logstash                                                                                                                                      |\n| fieldNames        | empty   | Map of Logstash field name mappings if overrides are needed                                                                                                                                |\n| customFields      | empty   | Custom fields to send in the message to logstash. If not provided, fall back to ElkLoggerConfigProvider. Entries with blank keys or values are ignored when generating custom fields JSON. |\n| useUdp            | false   | Whether to use UDP instead of the default TCP for connections                                                                                                                              |\n\nBelow is a custom configuration that does not include the [logging context](https://logback.qos.ch/manual/architecture.html#LoggerContext)\nor the [MDC](https://logback.qos.ch/manual/mdc.html).\n\nIt also overrides the default Logstash field names, whose default values are defined by the\n[LogstashCommonFieldNames](https://javadoc.io/doc/net.logstash.logback/logstash-logback-encoder/latest/logstash.logback.encoder/net/logstash/logback/fieldnames/LogstashCommonFieldNames.html)\nand [LogstashFieldNames](https://javadoc.io/doc/net.logstash.logback/logstash-logback-encoder/latest/logstash.logback.encoder/net/logstash/logback/fieldnames/LogstashFieldNames.html)\nclasses in the [logstash-logback-encoder](https://github.com/logfellow/logstash-logback-encoder) library.\n\n```yaml\n    logging:\n      level: WARN\n      appenders:\n        - type: elk\n          includeContext: false\n          includeMdc: false\n          fieldNames:\n            timestamp: timestampEpochMillis\n            version: ver\n            message: logMessage\n            logger: logName\n            thread: threadName\n            level: logLevel\n```\n\n### Caller Data\n\nIt might be tempting to set `includeCallerData` to `true`, which will then include information\nin every log message about the caller: `caller_class_name`, `caller_method_name`, `caller_file_name`,\nand `caller_line_number`. But including that data is [\"rather expensive\"](https://logback.qos.ch/manual/appenders.html#asyncIncludeCallerData)\nand should usually only be done in non-production environments. The reason is it expensive is that\na new `Throwable` is constructed for every log message. See the implementation in\n[LoggingEvent#getCallerData](https://github.com/qos-ch/logback/blob/1cd2df4be866ba48ec410ecd2e33855324b62476/logback-classic/src/main/java/ch/qos/logback/classic/spi/LoggingEvent.java#L399)\nif you want the gory details.\n\nBut if you really want to include it, just set `includeCallerData` to `true` in your configuration:\n\n```yaml\n    logging:\n      level: WARN\n      appenders:\n        - type: elk\n          includeCallerData: true\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkiwiproject%2Fdropwizard-elk-appender","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkiwiproject%2Fdropwizard-elk-appender","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkiwiproject%2Fdropwizard-elk-appender/lists"}