Volkan, Wondering if the following case is supported by the logstash layout:
Let's say logEvent.getMessage() contains the message like " key1=value1 key2=value2 someString". Then I want to parse that message and put to json: { "timestamp" : "x", "key1" : "value1", "key2" : "value2", "message" : "someString", .... } On Fri, Aug 14, 2020 at 5:23 PM Volkan Yazıcı <volkan.yaz...@gmail.com> wrote: > JsonTemplateLayout definitely supports access to MapMessage. Just try > searching for "MapMessage" in the documentation: > > https://github.com/apache/logging-log4j2/blob/master/src/site/asciidoc/manual/json-template-layout.adoc > > On Fri, Aug 14, 2020 at 5:14 PM Ralph Goers <ralph.go...@dslextreme.com> > wrote: > > > Volkan - Do you not support the MapMessage? That is the standard way to > > handle this and is what Log4j Audit does. It uses an AuditMessage that > > extends MapMessage. In fact, I should be able to construct a template > for > > AuditMessage to use with JsonTemplateLayout in Log4j-Audit. If I cannot > > then there is a problem. I should point out that with auditing I might > > have a hundred or more potential keys depending on how many audit events > I > > have defined. I would not want to create a layout that explicitly > specifies > > them all. But for a MapMessage I don’t see why I should have to. > > > > Ralph > > > > > On Aug 14, 2020, at 7:07 AM, Volkan Yazıcı <volkan.yaz...@gmail.com> > > wrote: > > > > > > Hello Naz, > > > > > > [Sorry for my late response.] > > > > > > I am the author of LogstashLayout and also its successor > > JsonTemplateLayout > > > which will be merged into the release-2.x branch of Log4j (hopefully) > in > > a > > > week or two. > > > > > > LogstashLayout **does** support blank value elimination, you just need > to > > > set emptyPropertyExclusionEnabled to true. > > > > > > I have excluded this feature in JsonTemplateLayout for two main > reasons: > > > > > > 1. It incurs an extra runtime cost. > > > 2. Most of the time you don't care. You persist logs in a storage > > system, > > > e.g., ELK stack, and there null value elimination is provided out of > > the > > > box by the storage engine in the most efficient way. > > > > > > Let me know if I can help you further. > > > > > > Kind regards. > > > > > > > > > On Fri, Aug 14, 2020 at 2:19 PM Naz S <sn1.naze...@gmail.com> wrote: > > > > > >> So far I have looked at the logstash layout ( > > >> https://github.com/vy/log4j2-logstash-layout). It seems it doesn't > work > > >> properly for my use case. > > >> > > >> Basically if I have key,value pairs I log them into the LogEvent > > message > > >> field, then I parse them while generating JSON objects. The key,value > > pairs > > >> are not known in advance; sometimes they are null; If the keys are > > null, I > > >> don't want to log them at all. Are there any other ways to do this? > > >> > > >> On Thu, Aug 13, 2020 at 3:38 PM Naz S <sn1.naze...@gmail.com> wrote: > > >> > > >>> Thank you for your swift response, really appreciate it. > > >>> > > >>> Wondering when the 2.14.0 release will come out? > > >>> > > >>> On Wed, Aug 12, 2020 at 4:59 PM Ralph Goers < > > ralph.go...@dslextreme.com> > > >>> wrote: > > >>> > > >>>> JsonTemplateLayout hasn’t been merged to the release-2.x branch but > it > > >>>> will be so that it can be included in the 2.14.0 release. > > >>>> > > >>>> Ralph > > >>>> > > >>>>> On Aug 12, 2020, at 7:47 AM, Carter Kozak <cko...@ckozak.net> > wrote: > > >>>>> > > >>>>> Hi Naz, > > >>>>> > > >>>>> Volkan has contributed a fantastic json template layout that I > expect > > >>>> will do what you want, however it has not been released yet. > > >>>>> https://github.com/apache/logging-log4j2/pull/335 > > >>>>> > > >>>>> This discussion from the mailing list provides several options > which > > >>>> may be relevant to your use case: > > >>>>> > > >>>> > > >> > > > https://lists.apache.org/thread.html/r538bb480c6d92813224b6a207e34210cccebc01e8d1781943d0ce32d%40%3Clog4j-user.logging.apache.org%3E > > >>>>> > > >>>>>> But my custom json layout doesn't write into a file. Do I have to > > >>>> write a file appender for that? > > >>>>> > > >>>>> Layout implementations can be configured with any appender, the > > >>>> existing file based appenders > > >>>>> work with custom layouts. The layout is responsible for converting > a > > >>>> LogEvent into a format (e.g. bytes) that > > >>>>> can be written to an appender (file, socket, standard out, etc) > > >> without > > >>>> being aware of the appenders > > >>>>> implementation details. > > >>>>> > > >>>>> Best, > > >>>>> -ck > > >>>>> > > >>>>> On Wed, Aug 12, 2020, at 09:56, Naz S wrote: > > >>>>>> Hi, > > >>>>>> > > >>>>>> I'm trying to use JSON layout for a logging format. When I use the > > >>>> default > > >>>>>> JSON Layout, I see that there are some fields which are > unnecessary > > >> to > > >>>> me > > >>>>>> (for example, loggerFqcn, endOfBatch, etc). > > >>>>>> > > >>>>>> Then I decided to implement a custom JSON layout. But I see that > > >>>>>> JacksonFactory is not visible outside the package. Now I get only > > >>>> necessary > > >>>>>> fields from LogEvent and generate JSON format using JSON > generator. > > >>>> Every > > >>>>>> configuration is done by code. But ultimately I want to configure > > >>>> fields in > > >>>>>> log4j2.xml file. Any suggestions? > > >>>>>> > > >>>>>> Also I would like to write logs into a log file. But my custom > json > > >>>> layout > > >>>>>> doesn't write into a file. Do I have to write a file appender for > > >> that? > > >>>>>> > > >>>>>> Many thanks, > > >>>>>> > > >>>> > > >>>> > > >>>> > > >>>> > --------------------------------------------------------------------- > > >>>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > > >>>> For additional commands, e-mail: log4j-user-h...@logging.apache.org > > >>>> > > >>>> > > >> > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org > > For additional commands, e-mail: log4j-user-h...@logging.apache.org > > > > >