Custom JSONLayout

classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

Custom JSONLayout

Naz S
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,
Reply | Threaded
Open this post in threaded view
|

Re: Custom JSONLayout

Carter Kozak-2
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,
>
Reply | Threaded
Open this post in threaded view
|

Re: Custom JSONLayout

Ralph Goers
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 <[hidden email]> 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: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Custom JSONLayout

Naz S
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 <[hidden email]>
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 <[hidden email]> 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: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Custom JSONLayout

Naz S
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 <[hidden email]> 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 <[hidden email]>
> 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 <[hidden email]> 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: [hidden email]
>> For additional commands, e-mail: [hidden email]
>>
>>
Reply | Threaded
Open this post in threaded view
|

Re: Custom JSONLayout

Volkan Yazıcı
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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]>
> > 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 <[hidden email]> 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: [hidden email]
> >> For additional commands, e-mail: [hidden email]
> >>
> >>
>
Reply | Threaded
Open this post in threaded view
|

Re: Custom JSONLayout

Ralph Goers
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ı <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]>
>>> 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 <[hidden email]> 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: [hidden email]
>>>> For additional commands, e-mail: [hidden email]
>>>>
>>>>
>>



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Custom JSONLayout

Volkan Yazıcı
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 <[hidden email]>
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ı <[hidden email]>
> 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 <[hidden email]> 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 <[hidden email]> 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 <
> [hidden email]>
> >>> 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 <[hidden email]> 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: [hidden email]
> >>>> For additional commands, e-mail: [hidden email]
> >>>>
> >>>>
> >>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Custom JSONLayout

Naz S
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ı <[hidden email]>
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 <[hidden email]>
> 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ı <[hidden email]>
> > 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 <[hidden email]> 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 <[hidden email]> 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 <
> > [hidden email]>
> > >>> 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 <[hidden email]>
> 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: [hidden email]
> > >>>> For additional commands, e-mail: [hidden email]
> > >>>>
> > >>>>
> > >>
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [hidden email]
> > For additional commands, e-mail: [hidden email]
> >
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: Custom JSONLayout

Ralph Goers
Is the Message passed to the LogEvent a MapMessage?

Ralph

> On Aug 14, 2020, at 9:40 AM, Naz S <[hidden email]> wrote:
>
> 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ı <[hidden email]>
> 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 <[hidden email]>
>> 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ı <[hidden email]>
>>> 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 <[hidden email]> 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 <[hidden email]> 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 <
>>> [hidden email]>
>>>>>> 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 <[hidden email]>
>> 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: [hidden email]
>>>>>>> For additional commands, e-mail: [hidden email]
>>>>>>>
>>>>>>>
>>>>>
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [hidden email]
>>> For additional commands, e-mail: [hidden email]
>>>
>>>
>>



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Custom JSONLayout

Naz S
No, it's not.

We just log it as a string.

On Fri, Aug 14, 2020 at 7:22 PM Ralph Goers <[hidden email]>
wrote:

> Is the Message passed to the LogEvent a MapMessage?
>
> Ralph
>
> > On Aug 14, 2020, at 9:40 AM, Naz S <[hidden email]> wrote:
> >
> > 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ı <[hidden email]>
> > 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 <[hidden email]
> >
> >> 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ı <[hidden email]>
> >>> 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 <[hidden email]> 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 <[hidden email]> 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 <
> >>> [hidden email]>
> >>>>>> 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 <[hidden email]>
> >> 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: [hidden email]
> >>>>>>> For additional commands, e-mail:
> [hidden email]
> >>>>>>>
> >>>>>>>
> >>>>>
> >>>
> >>>
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: [hidden email]
> >>> For additional commands, e-mail: [hidden email]
> >>>
> >>>
> >>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Custom JSONLayout

Ralph Goers
I would suggest you consider using MapMessage. The usage you are describing is why it exists.

Ralph

> On Aug 14, 2020, at 12:48 PM, Naz S <[hidden email]> wrote:
>
> No, it's not.
>
> We just log it as a string.
>
> On Fri, Aug 14, 2020 at 7:22 PM Ralph Goers <[hidden email]>
> wrote:
>
>> Is the Message passed to the LogEvent a MapMessage?
>>
>> Ralph
>>
>>> On Aug 14, 2020, at 9:40 AM, Naz S <[hidden email]> wrote:
>>>
>>> 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ı <[hidden email]>
>>> 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 <[hidden email]
>>>
>>>> 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ı <[hidden email]>
>>>>> 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 <[hidden email]> 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 <[hidden email]> 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 <
>>>>> [hidden email]>
>>>>>>>> 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 <[hidden email]>
>>>> 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: [hidden email]
>>>>>>>>> For additional commands, e-mail:
>> [hidden email]
>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: [hidden email]
>>>>> For additional commands, e-mail: [hidden email]
>>>>>
>>>>>
>>>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [hidden email]
>> For additional commands, e-mail: [hidden email]
>>
>>



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]