{"id":18141557,"url":"https://github.com/skjolber/logback-logstash-syntax-highlighting-decorators","last_synced_at":"2025-04-22T13:18:16.686Z","repository":{"id":34915475,"uuid":"119906795","full_name":"skjolber/logback-logstash-syntax-highlighting-decorators","owner":"skjolber","description":"Syntax highlighting JSON decorator for logstash-logback-encoder","archived":false,"fork":false,"pushed_at":"2024-12-27T07:30:44.000Z","size":132,"stargazers_count":7,"open_issues_count":1,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-22T13:17:54.443Z","etag":null,"topics":["ansi","colors","jackson","json","kibana","logback","logstash","syntax-highlighting"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/skjolber.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2018-02-01T23:36:08.000Z","updated_at":"2024-10-04T10:46:27.000Z","dependencies_parsed_at":"2024-03-03T23:33:00.642Z","dependency_job_id":null,"html_url":"https://github.com/skjolber/logback-logstash-syntax-highlighting-decorators","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skjolber%2Flogback-logstash-syntax-highlighting-decorators","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skjolber%2Flogback-logstash-syntax-highlighting-decorators/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skjolber%2Flogback-logstash-syntax-highlighting-decorators/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skjolber%2Flogback-logstash-syntax-highlighting-decorators/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/skjolber","download_url":"https://codeload.github.com/skjolber/logback-logstash-syntax-highlighting-decorators/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250246728,"owners_count":21398919,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["ansi","colors","jackson","json","kibana","logback","logstash","syntax-highlighting"],"created_at":"2024-11-01T17:07:37.119Z","updated_at":"2025-04-22T13:18:16.638Z","avatar_url":"https://github.com/skjolber.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Build Status](https://github.com/skjolber/logback-logstash-syntax-highlighting-decorators/actions/workflows/maven.yml/badge.svg) \n[![Maven Central](https://img.shields.io/maven-central/v/com.github.skjolber.logback-logstash-syntax-highlighting-decorators/logback-logstash-syntax-highlighting-decorators.svg)](https://mvnrepository.com/artifact/com.github.skjolber.logback-logstash-syntax-highlighting-decorators/logback-logstash-syntax-highlighting-decorators)\n\n# This project is currently maintained at [Entur](https://github.com/entur/logback-logstash-syntax-highlighting-decorators).\n\n# logback-logstash-syntax-highlighting-decorators\nANSI syntax highlighting for [logstash-logback-encoder] JSON output.\n\nFeatures:\n  * Syntax highlighting (and pretty printing)\n  * Special field handling \n    * Level: trace, debug, info, warn and error\n    * Message\n\nThe primary use-case for this tool is coloring JSON console-output during __local development / unit testing__.\n\nIn production rather configure an encoder without a `Decorator` and apply proper visualization tools like [Kibana]. \nUse [conditional processing] to differentiate between different environments in [Logback] configuration.\n\n## Example output\n\n![Example](docs/logLevel.png?raw=true \"Example\")\n\n## License\n[Apache 2.0]\n\n# Obtain\nThe project is based on [Maven] and is available at central Maven repository.\n\n\u003cdetails\u003e\n  \u003csummary\u003eMaven coordinates\u003c/summary\u003e\n\nAdd the property\n```xml\n\u003clogback-logstash-syntax-highlighting-decorators.version\u003e1.0.6\u003c/logback-logstash-syntax-highlighting-decorators.version\u003e\n```\n\nthen add\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.skjolber.logback-logstash-syntax-highlighting-decorators\u003c/groupId\u003e\n    \u003cartifactId\u003elogback-logstash-syntax-highlighting-decorators\u003c/artifactId\u003e\n    \u003cversion\u003e${logback-logstash-syntax-highlighting-decorators.version}\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\u003c/details\u003e\n\nor\n\n\u003cdetails\u003e\n  \u003csummary\u003eGradle coordinates\u003c/summary\u003e\n\nFor\n\n```groovy\next {\n  logbackLogstashSyntaxHighlightingDecoratorsVersion = '1.0.6'\n}\n```\n\nadd\n\n```groovy\nimplementation (\"com.github.skjolber.logback-logstash-syntax-highlighting-decorators:logback-logstash-syntax-highlighting-decorators:${logbackLogstashSyntaxHighlightingDecoratorsVersion}\")\n```\n\u003c/details\u003e\n\n# Usage\nAdd a [JsonGeneratorDecorator]:\n\n```xml\n\u003cappender name=\"STDOUT_JSON\" class=\"ch.qos.logback.core.ConsoleAppender\"\u003e\n    \u003cencoder class=\"net.logstash.logback.encoder.LogstashEncoder\"\u003e\n        \u003c!-- add pretty-printing and syntax highlighting for testing --\u003e\n        \u003cjsonGeneratorDecorator class=\"com.github.skjolber.decorators.SyntaxHighlightingDecorator\"/\u003e\n    \u003c/encoder\u003e\n\u003c/appender\u003e\n```\n\nThe default decorator is aware of the log-level and highlights `WARN` and `ERROR` with yellow and red background colors. \n\n## Custom colors\nDefine your own colors using `ConfigurableSyntaxHighlighter`:\n\n```xml\n\u003cjsonGeneratorDecorator class=\"com.github.skjolber.decorators.SyntaxHighlightingDecorator\"\u003e\n    \u003csyntaxHighlighterFactory class=\"com.github.skjolber.decorators.factory.ConfigurableSyntaxHighlighterFactory\"\u003e\n        \u003cstringValue\u003eblue\u003c/stringValue\u003e\n        \u003cnumberValue\u003eblack highIntensity\u003c/numberValue\u003e\n        \u003cfieldName\u003ered\u003c/fieldName\u003e\n        \u003cbinaryValue\u003eyellowBackground\u003c/binaryValue\u003e\n        \u003cbooleanValue\u003ecyan\u003c/booleanValue\u003e\n        \u003cnullValue\u003eblack\u003c/nullValue\u003e\n        \u003ccurlyBrackets\u003egreen\u003c/curlyBrackets\u003e\n        \u003csquareBrackets\u003egreen\u003c/squareBrackets\u003e\n        \u003ccolon\u003egreen\u003c/colon\u003e\n        \u003cwhitespace\u003egreen\u003c/whitespace\u003e\n        \u003ccomma\u003egreen\u003c/comma\u003e\n    \u003c/syntaxHighlighterFactory\u003e\n\u003c/jsonGeneratorDecorator\u003e\n ```\n\nand space-separated foreground, background and style keys. For special handling of fields `message` and `level`, use the `LogLevelSyntaxHighlighterFactory`:\n\n```xml\n\u003cjsonGeneratorDecorator class=\"com.github.skjolber.decorators.SyntaxHighlightingDecorator\"\u003e\n    \u003csyntaxHighlighterFactory class=\"com.github.skjolber.decorators.factory.LogLevelSyntaxHighlighterFactory\"\u003e\n        \u003clevel\u003e\n            \u003cinfo\u003egreen\u003c/info\u003e\n            \u003cwarning\u003eyellow\u003c/warning\u003e\n            \u003cerror\u003ered\u003c/error\u003e\n        \u003c/level\u003e\n        \u003cmessage\u003ehighIntensity blue\u003c/message\u003e\n    \u003c/syntaxHighlighterFactory\u003e\n\u003c/jsonGeneratorDecorator\u003e\n```\n\n#### Pretty-printing\nPretty-printing (with newline + indent) is enabled by default. To disable it, a `prettyPrint`-element under `SyntaxHighlightingDecorator` like so:\n\n\n```xml\n\u003cjsonGeneratorDecorator class=\"com.github.skjolber.decorators.SyntaxHighlightingDecorator\"\u003e\n\t\u003cprettyPrint\u003efalse\u003c/prettyPrint\u003e\n\u003c/jsonGeneratorDecorator\u003e\n```\n\n### Foreground color\n| Key | Text color |\n| ----- | ----------- |\n| default | Default text |\n| black | Black text |\n| red | Red text | \n| green | Green text |\n| yellow | Yellow text |\n| blue | Blue text |\n| magenta | Magneta text |\n| cyan | Cyan text |\n| white | White text |\n\n### Background color\n| Key | Background color |\n| ----- | ----------- |\n| defaultBackground | Default |\n| blackBackground | Black |\n| redBackground | Red |\n| greenBackground | Green |\n| yellowBackground | Yellow |\n| blueBackground | Blue |\n| magentaBackground | Magneta |\n| cyanBackground | Cyan | \n| whiteBackground | White |\n \n### Style\n| Key | Style |\n| ----- | ----------- |\n| highIntensity | High intensity (bold) |\n| lowIntensity | Low instensity |\n| italic | Italic\n| underline | Underline\n| blink| Blink |\n\n\n## Details\nThe `SyntaxHighlightingDecorator` supports a list of `\u003csyntaxHighlighterFactory\u003e` elements. The colors are applied in chronological order. Highlighters not wanting to contribute to the current JSON event are expected to return an ANSI reset (including escaping).\n\n## Tips and tricks\nExclude fields with low information value during testing. For example: \n\n```xml\n\u003cencoder class=\"net.logstash.logback.encoder.LogstashEncoder\"\u003e\n    \u003c!-- remove unnecessary fields in testing --\u003e\n    \u003cfieldNames\u003e\n        \u003clevelValue\u003e[ignore]\u003c/levelValue\u003e\n        \u003cversion\u003e[ignore]\u003c/version\u003e\n    \u003c/fieldNames\u003e\n\u003c/encoder\u003e\n```\n\n# History\n - 1.0.6: Do not set default colors.\n - 1.0.5: Add option for single-line output\n - 1.0.1-1.0.4: Update Jackson dependency due to security issue and dependency updates\n - 1.0.0: Initial version\n\n[Apache 2.0]:          \t\thttp://www.apache.org/licenses/LICENSE-2.0.html\n[issue-tracker]:       \t\thttps://github.com/skjolber/logback-logstash-syntax-highlighting-decorators/issues\n[Maven]:                \thttp://maven.apache.org/\n[1.0.2]:\t\t\t\t\thttps://github.com/skjolber/logback-logstash-syntax-highlighting-decorators/releases/tag/logback-logstash-syntax-highlighting-decorators-1.0.1\n[jackson-syntax-highlight]:\thttps://github.com/skjolber/jackson-syntax-highlight\n[Jackson]:\t\t\t\t\thttps://github.com/FasterXML/jackson\n[ANSI]:\t\t\t\t\t\thttps://en.wikipedia.org/wiki/ANSI_escape_code\n[JSON]:\t\t\t\t\t\thttps://no.wikipedia.org/wiki/JSON\n[JsonGeneratorDecorator]:\thttps://github.com/logstash/logstash-logback-encoder/blob/master/src/main/java/net/logstash/logback/decorate/JsonGeneratorDecorator.java\n[logstash-logback-encoder]:\thttps://github.com/logstash/logstash-logback-encoder\n[Kibana]:                   https://www.elastic.co/products/kibana\n[conditional processing]:\thttps://logback.qos.ch/manual/configuration.html#conditional\n[Logback]:\t\t\t\t\thttps://github.com/qos-ch/logback\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskjolber%2Flogback-logstash-syntax-highlighting-decorators","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskjolber%2Flogback-logstash-syntax-highlighting-decorators","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskjolber%2Flogback-logstash-syntax-highlighting-decorators/lists"}