{"id":37028227,"url":"https://github.com/indeedeng/log4j-jsonevent-layout","last_synced_at":"2026-01-14T03:22:03.943Z","repository":{"id":57725203,"uuid":"10270651","full_name":"indeedeng/log4j-jsonevent-layout","owner":"indeedeng","description":"A prefab PatternLayout for log4j that generates logstash json_event formatted data","archived":true,"fork":true,"pushed_at":"2023-03-18T20:59:46.000Z","size":97,"stargazers_count":2,"open_issues_count":1,"forks_count":4,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-09-29T11:48:33.675Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"logstash/log4j-jsonevent-layout","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/indeedeng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-05-24T16:38:42.000Z","updated_at":"2025-07-18T17:43:17.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/indeedeng/log4j-jsonevent-layout","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/indeedeng/log4j-jsonevent-layout","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indeedeng%2Flog4j-jsonevent-layout","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indeedeng%2Flog4j-jsonevent-layout/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indeedeng%2Flog4j-jsonevent-layout/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indeedeng%2Flog4j-jsonevent-layout/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/indeedeng","download_url":"https://codeload.github.com/indeedeng/log4j-jsonevent-layout/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indeedeng%2Flog4j-jsonevent-layout/sbom","scorecard":{"id":487199,"data":{"date":"2025-08-11","repo":{"name":"github.com/indeedeng/log4j-jsonevent-layout","commit":"5e4b2ba4c37089b46207932f7fb6ccf2d8f5d6b3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.9,"checks":[{"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":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"Code-Review","score":0,"reason":"Found 0/30 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":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"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":"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":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"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":"Vulnerabilities","score":0,"reason":"55 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-h46c-h94j-95f3","Warn: Project is vulnerable to: GHSA-wf8f-6423-gfxg","Warn: Project is vulnerable to: GHSA-4gq5-ch57-c2mg","Warn: Project is vulnerable to: GHSA-4w82-r329-3q67","Warn: Project is vulnerable to: GHSA-57j2-w4cx-62h2","Warn: Project is vulnerable to: GHSA-5949-rw7g-wx7w","Warn: Project is vulnerable to: GHSA-5r5r-6hpj-8gg9","Warn: Project is vulnerable to: GHSA-5ww9-j83m-q7qx","Warn: Project is vulnerable to: GHSA-645p-88qh-w398","Warn: Project is vulnerable to: GHSA-6fpp-rgj9-8rwc","Warn: Project is vulnerable to: GHSA-85cw-hj65-qqv9","Warn: Project is vulnerable to: GHSA-89qr-369f-5m5x","Warn: Project is vulnerable to: GHSA-8c4j-34r4-xr8g","Warn: Project is vulnerable to: GHSA-8w26-6f25-cm9x","Warn: Project is vulnerable to: GHSA-9gph-22xh-8x98","Warn: Project is vulnerable to: GHSA-9m6f-7xcq-8vf8","Warn: Project is vulnerable to: GHSA-c8hm-7hpq-7jhg","Warn: Project is vulnerable to: GHSA-cf6r-3wgc-h863","Warn: Project is vulnerable to: GHSA-cggj-fvv3-cqwv","Warn: Project is vulnerable to: GHSA-cjjf-94ff-43w7","Warn: Project is vulnerable to: GHSA-cmfg-87vq-g5g4","Warn: Project is vulnerable to: GHSA-cvm9-fjm9-3572","Warn: Project is vulnerable to: GHSA-f3j5-rmmp-3fc5","Warn: Project is vulnerable to: GHSA-f9xh-2qgp-cq57","Warn: Project is vulnerable to: GHSA-fmmc-742q-jg75","Warn: Project is vulnerable to: GHSA-fqwf-pjwf-7vqv","Warn: Project is vulnerable to: GHSA-gjmw-vf9h-g25v","Warn: Project is vulnerable to: GHSA-gwp4-hfv6-p7hw","Warn: Project is vulnerable to: GHSA-gww7-p5w4-wrfv","Warn: Project is vulnerable to: GHSA-h3cw-g4mq-c5x2","Warn: Project is vulnerable to: GHSA-h592-38cm-4ggp","Warn: Project is vulnerable to: GHSA-h822-r4r5-v8jg","Warn: Project is vulnerable to: GHSA-m6x4-97wx-4q27","Warn: Project is vulnerable to: GHSA-mph4-vhrx-mv67","Warn: Project is vulnerable to: GHSA-mx7p-6679-8g3q","Warn: Project is vulnerable to: GHSA-p43x-xfjf-5jhr","Warn: Project is vulnerable to: GHSA-q93h-jc49-78gg","Warn: Project is vulnerable to: GHSA-qjw2-hr98-qgfh","Warn: Project is vulnerable to: GHSA-qr7j-h6gg-jmgc","Warn: Project is vulnerable to: GHSA-qxxx-2pp7-5hmx","Warn: Project is vulnerable to: GHSA-r3gr-cxrf-hg25","Warn: Project is vulnerable to: GHSA-r695-7vr9-jgc2","Warn: Project is vulnerable to: GHSA-rfx6-vp9g-rh7v","Warn: Project is vulnerable to: GHSA-rgv9-q543-rqg4","Warn: Project is vulnerable to: GHSA-rpr3-cw39-3pxh","Warn: Project is vulnerable to: GHSA-v585-23hc-c647","Warn: Project is vulnerable to: GHSA-vfqx-33qm-g869","Warn: Project is vulnerable to: GHSA-w3f4-3q6j-rh82","Warn: Project is vulnerable to: GHSA-wh8g-3j2c-rqj5","Warn: Project is vulnerable to: GHSA-j288-q9x7-2f5v","Warn: Project is vulnerable to: GHSA-2qrg-x229-3v8q","Warn: Project is vulnerable to: GHSA-65fg-84f6-3jq3","Warn: Project is vulnerable to: GHSA-f7vh-qwp3-x37m","Warn: Project is vulnerable to: GHSA-fp5r-v3w9-4333","Warn: Project is vulnerable to: GHSA-w9p3-5cr8-m3jj"],"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-19T18:07:18.745Z","repository_id":57725203,"created_at":"2025-08-19T18:07:18.745Z","updated_at":"2025-08-19T18:07:18.745Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408828,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"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":[],"created_at":"2026-01-14T03:22:03.450Z","updated_at":"2026-01-14T03:22:03.939Z","avatar_url":"https://github.com/indeedeng.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Logstash `json_event` pattern for log4j [indeed fork]\n\n[![Build Status](https://travis-ci.org/lusis/log4j-jsonevent-layout.png)](https://travis-ci.org/lusis/log4j-jsonevent-layout)\n\n## What is it?\nIf you've used log4j, you know that certain appenders support things called _\"Layouts\"_. These are basically ways for you to control the formatting/rendering of a log event.\n\nThere's a full list of formatting macros [here](http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html) if you're curious.\n\nThe PatternLayout an organization uses is pretty much begging to be bikeshedded. This library is essentially a \"preformatted\" layout that just happens to be the exact format that Logstash uses for `json_event`.\n\n## JSONEventLayout\nI recently came to a situation where I needed consider parsing some log4j-generated log events with Logstash. I had [another appender already](https://github.com/lusis/zmq-appender) but unfortunately the external dependency on ZeroMQ itself was a no go. So there were two options:\n\n- The experimental log4j input\n- file input\n\nThe `log4j` input is actually pretty cool but needs to be refactored a little bit. It's based around log4j's SocketAppender which actually sends a serialized version of the LoggingEvent object over the wire. This has a few issues that are easily worked out but it's also experimental. I needed something a bit more stable. I also wanted to avoid any filtering if at all possible.\n\nThen I remembered the \"hack\" that would let you dump your [apache](http://cookbook.logstash.net/recipes/apache-json-logs/) or [nginx](http://blog.pkhamre.com/2012/08/23/logging-to-logstash-json-format-in-nginx/) logs in json_event format.\n\nI probably could have pulled this off using a complicated PatternLayout but decided I wanted a turnkey \"soluton\" that did the work for you. That's what this library is.\n\n# Usage\nThis is just a quick snippit of a `log4j.properties` file:\n\n```\nlog4j.rootCategory=WARN, RollingLog\nlog4j.appender.RollingLog=org.apache.log4j.DailyRollingFileAppender\nlog4j.appender.RollingLog.Threshold=TRACE\nlog4j.appender.RollingLog.File=api.log\nlog4j.appender.RollingLog.DatePattern=.yyyy-MM-dd\nlog4j.appender.RollingLog.layout=net.logstash.log4j.JSONEventLayoutV1\n```\n\nIf you use this, your logfile will now have one line per event and it will look something like this:\n\n```json\n{\n  \"mdc\":{},\n  \"line_number\":\"29\",\n  \"class\":\"org.eclipse.jetty.examples.logging.EchoFormServlet\",\n  \"@version\":1,\n  \"source_host\":\"jvstratusmbp.local\",\n  \"thread_name\":\"qtp513694835-14\",\n  \"message\":\"Got request from 0:0:0:0:0:0:0:1%0 using Mozilla\\/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit\\/537.36 (KHTML, like Gecko) Chrome\\/32.0.1700.77 Safari\\/537.36\",\n  \"@timestamp\":\"2014-01-27T19:52:35.738Z\",\n  \"level\":\"INFO\",\n  \"file\":\"EchoFormServlet.java\",\n  \"method\":\"doPost\",\n  \"logger_name\":\"org.eclipse.jetty.examples.logging.EchoFormServlet\"\n}\n```\n\nIf you point logstash to this file and set the format to `json`, you'll basically get the same thing in your output because no filtering was needed to get this data into the right places.\n\nNothing really groundbreaking here. However you can now use this same prefab PatternLayout with ANY appender that supports layouts. If that appender matches up with a logstash input, you've now got flexibility in your transport with reduced filtering impact (since you don't need to parse the logs as much). In fact, if you want to use RabbitMQ, you could use this layout with [@jbrisbin's amqp-appender](https://github.com/jbrisbin/vcloud/tree/master/amqp-appender) or [Ryan Tenney's redis appender](https://github.com/ryantenney/log4j-redis-appender)\n\n# Exceptions\n\nIf there is throwable information available in your event, it will be populated under the key `exception` like so:\n\n```json\n{\n  \"mdc\":{},\n  \"exception\":{\n    \"exception_class\":\"java.lang.IllegalArgumentException\",\n    \"exception_message\":\"Something broke!\",\n    \"stacktrace\":\"java.lang.IllegalArgumentException: Something broke!\\n\\tat org.eclipse.jetty.examples.logging.EchoFormServlet.doPost(EchoFormServlet.java:64)\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:755)\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:848)\\n\\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)\\n\\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501)\\n\\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)\\n\\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)\\n\\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)\\n\\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)\\n\\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)\\n\\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)\\n\\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)\\n\\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)\\n\\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)\\n\\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)\\n\\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)\\n\\tat org.eclipse.jetty.server.Server.handle(Server.java:370)\\n\\tat org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)\\n\\tat org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)\\n\\tat org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043)\\n\\tat org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)\\n\\tat org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)\\n\\tat org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)\\n\\tat org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)\\n\\tat org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)\\n\\tat java.lang.Thread.run(Thread.java:695)\"\n  },\n  \"line_number\":\"64\",\n  \"class\":\"org.eclipse.jetty.examples.logging.EchoFormServlet\",\n  \"@version\":1,\n  \"source_host\":\"jvstratusmbp.local\",\n  \"message\":\"[exception] description = \\\"kaboom\\\"\",\n  \"thread_name\":\"qtp1787577195-18\",\n  \"@timestamp\":\"2014-01-27T20:11:36.006Z\",\n  \"level\":\"FATAL\",\n  \"file\":\"EchoFormServlet.java\",\n  \"method\":\"doPost\",\n  \"logger_name\":\"org.eclipse.jetty.examples.logging.EchoFormServlet\"\n}\n```\n\nEasy access to the exception class and exception message let's you work with those....easier.\n\n# Sample XML configuration\nIf you use the XML format for your log4j configuration (and there are valid reasons thanks to AsyncAppender - fml), changing your layout class for your appender would look like this\n\n## Old\n```xml\n   \u003cappender name=\"Console\" class=\"org.apache.log4j.ConsoleAppender\"\u003e\n     \u003cparam name=\"Threshold\" value=\"TRACE\" /\u003e\n     \u003clayout class=\"org.apache.log4j.PatternLayout\"\u003e\n       \u003cparam name=\"ConversionPattern\" value=\"[%d{dd MMM yyyy HH:mm:ss.SSS}] [%p.%c] %m%n\" /\u003e\n     \u003c/layout\u003e\n   \u003c/appender\u003e\n```\n\n## New\n```xml\n   \u003cappender name=\"Console\" class=\"org.apache.log4j.ConsoleAppender\"\u003e\n     \u003cparam name=\"Threshold\" value=\"TRACE\" /\u003e\n     \u003clayout class=\"net.logstash.log4j.JSONEventLayoutV1\" /\u003e\n   \u003c/appender\u003e\n```\n\nAny appender that supports defining the layout can use this.\n\n# V0/V1/Vnothing\nOriginally the layout class was called `JSONEventLayout`. This was originally written back when there was no versioned event format for logstash. As of Logstash 1.2 and forward, the event format is now versioned. The current version is `1` and defined the following required fields:\n\n- `@version`\n- `@timestamp` (optional - will be inferred from event receipt time\n\nBecause of this, when adding support for the new format, `JSONEventLayoutV1` was used to allow backwards compatibility. As of `1.6` of the jsonevent-layout library, we've now gone to fully versioned appenders. There is no longer a `JSONEventLayout`. Instead there is:\n\n- `JSONEventLayoutV0`\n- `JSONEventLayoutV1`\n\nWork has stopped on V0 but it won't be removed. No new features are added to V0 (custom UserFields for instance).\n\n# Custom User Fields\nAs of version 1.6, you can now add your own metadata to the event in the form of comma-separated key:value pairs. This can be set in either the log4jconfig OR set on the java command-line:\n\n## log4j config\n```xml\n\u003clayout class=\"net.logstash.log4j.JSONEventLayoutV1\" \u003e\n  \u003cparam name=\"UserFields\" value=\"foo:bar,baz:quz\" /\u003e\n\u003c/layout\u003e\n```\n\nor\n\n```\nlog4j.appender.RollingLog.layout=net.logstash.log4j.JSONEventLayoutV1\nlog4j.appender.RollingLog.layout.UserFields=foo:bar,baz:qux\n```\n\n## Command-line\n*Note that the command-line version will OVERRIDE any values specified in the config file should there be a key conflict!*\n\n`java -Dnet.logstash.log4j.JSONEventLayoutV1.UserFields=\"field3:prop3,field4:prop4\" -jar .....`\n\nA warning will be logged should you attempt to set values in both places.\n\n# Pull Requests\nPull requests are welcome for any and all things - documentation, bug fixes...whatever.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findeedeng%2Flog4j-jsonevent-layout","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Findeedeng%2Flog4j-jsonevent-layout","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findeedeng%2Flog4j-jsonevent-layout/lists"}