karaf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Guillaume Nodet <gno...@apache.org>
Subject Re: Using Custom Layout for Log4j2 in Karaf 4.1.x...
Date Mon, 29 May 2017 09:40:32 GMT
You can use a native log4j2 xml config file, but you need to instruct
pax-logging-log4j2 about the location of this file, something like the
following entry in the etc/org.ops4j.pax.logging.cfg file

 org.ops4j.pax.logging.log4j2.config.file=${karaf.etc}/log4j2.xml

2017-05-25 19:54 GMT+02:00 James Carman <james@carmanconsulting.com>:

> Can I just create a log4j2 XML file in the "etc" directory?  I've always
> just used the properties file format because that's what PAX uses.
>
> On Thu, May 25, 2017 at 1:48 PM Matt Sicker <boards@gmail.com> wrote:
>
> > I remember there being a bug involving the packages property in only the
> > properties file format, not sure if it was fixed. Do you get the same
> issue
> > when using the XML format?
> >
> > On 25 May 2017 at 12:14, James Carman <james@carmanconsulting.com>
> wrote:
> >
> > > Okay, I've found a work-around for me, but I think it brings up a
> slight
> > > improvement. By default, Log4j will only search in the
> > > org.apache.logging.log4j.core.* packages for plugins. So, while the
> > > fragment host approach does work to get my classes into the
> > > "org.ops4j.pax.logging.pax-logging-log4j2" bundle (not
> > pax-logging-service
> > > as described in the instructions/examples), Log4j will not find them,
> > > because they're not in the correct package structure. By moving my
> custom
> > > layout to a package underneath that root package, I was able to get
> > things
> > > working properly.  We need a way to change the package list that Log4j
> > > searches.  I tried setting the log4j2.packages property in the
> > > configuration file, but it doesn't seem to be working.  Thoughts?
> > >
> > >
> > >
> > >
> > > On Thu, May 25, 2017 at 10:09 AM Matt Sicker <boards@gmail.com> wrote:
> > >
> > > > It's possible there's an issue with the shading going on. Ideally,
> > log4j2
> > > > should be split into at least log4j-api and log4j-core, but
> pax-logging
> > > > shades them together for some reason.
> > > >
> > > > On 25 May 2017 at 00:55, Jean-Baptiste Onofré <jb@nanthrax.net>
> wrote:
> > > >
> > > > > Hi guys,
> > > > >
> > > > > I will take a look on this one. It sounds like a missing
> > > > > activator/fragment host in pax-logging-log4jv2.
> > > > >
> > > > > Regards
> > > > > JB
> > > > >
> > > > >
> > > > > On 05/25/2017 02:38 AM, James Carman wrote:
> > > > >
> > > > >> I can try to help if you guys want.  Want me to tinker?  I think
> we
> > > will
> > > > >> want to update the docs too, since folks will need to generate
> those
> > > dat
> > > > >> files.
> > > > >> On Wed, May 24, 2017 at 8:31 PM Matt Sicker <boards@gmail.com>
> > wrote:
> > > > >>
> > > > >> Oh, well that certainly sounds like a problem! There's an
> activator
> > in
> > > > >>> both
> > > > >>> log4j-api and log4j-core from what I recall, so pax-logging
might
> > > need
> > > > >>> something custom as well.
> > > > >>>
> > > > >>> On 24 May 2017 at 17:41, James Carman <
> james@carmanconsulting.com>
> > > > >>> wrote:
> > > > >>>
> > > > >>> So, I've done a bit of digging.  Log4j2 ships with an Activator
> > that
> > > > sets
> > > > >>>> up a BundleListener which scans (looks for Log4j2Plugins.dat
> > files)
> > > > >>>>
> > > > >>> bundles
> > > > >>>
> > > > >>>> for any plugins to be registered.  Since log4j itself
is not
> > loaded
> > > > as a
> > > > >>>> bundle (it appears to be shaded into pax-logging-log4j2),
that
> > > > Activator
> > > > >>>> doesn't run.  Perhaps we should delegate to Log4j's internal
> > > Activator
> > > > >>>> during the start() method of the Pax Logging Activator
> > > > >>>> (org.ops4j.pax.logging.log4j2.internal.Activator)?  Do
we cover
> > > this
> > > > >>>> behavior in some other way?
> > > > >>>>
> > > > >>>>
> > > > >>>> On Wed, May 24, 2017 at 3:32 PM James Carman <
> > > > >>>> james@carmanconsulting.com
> > > > >>>>
> > > > >>>> wrote:
> > > > >>>>
> > > > >>>> So, am I way off base with my approach or anything? 
Should
> Karaf
> > be
> > > > >>>>> installing pax-logging-service?  Or, is pax-logging-log4j2
> taking
> > > its
> > > > >>>>>
> > > > >>>> place
> > > > >>>>
> > > > >>>>> for Karaf?  Is there anything special we have to
do to
> implement
> > a
> > > > >>>>>
> > > > >>>> custom
> > > > >>>
> > > > >>>> Layout using pax-logging?  Is there a working example
I can use
> to
> > > > >>>>>
> > > > >>>> install
> > > > >>>>
> > > > >>>>> into karaf to see if it works for me?
> > > > >>>>>
> > > > >>>>>
> > > > >>>>> On Wed, May 24, 2017 at 3:20 PM Matt Sicker <boards@gmail.com>
> > > > wrote:
> > > > >>>>>
> > > > >>>>> I mostly work on Log4j2, though I try to answer questions
about
> > it
> > > on
> > > > >>>>>> ops4j
> > > > >>>>>> and karaf due to pax-logging.
> > > > >>>>>>
> > > > >>>>>> On 24 May 2017 at 14:17, James Carman <
> > james@carmanconsulting.com
> > > >
> > > > >>>>>>
> > > > >>>>> wrote:
> > > > >>>>
> > > > >>>>>
> > > > >>>>>> I know. ;)  And I meant no slight to you.  I
didn't know you
> > were
> > > > >>>>>>>
> > > > >>>>>> one
> > > > >>>
> > > > >>>> of
> > > > >>>>
> > > > >>>>> the contributors these days.  I have checked out
the code and
> I'm
> > > > >>>>>>>
> > > > >>>>>> going
> > > > >>>>
> > > > >>>>> to
> > > > >>>>>>
> > > > >>>>>>> poke around a bit.
> > > > >>>>>>>
> > > > >>>>>>> On Wed, May 24, 2017 at 3:15 PM Matt Sicker
<
> boards@gmail.com>
> > > > >>>>>>>
> > > > >>>>>> wrote:
> > > > >>>
> > > > >>>>
> > > > >>>>>>> That would be on the ops4j lists, though
that's mostly the
> same
> > > > >>>>>>>>
> > > > >>>>>>> people as
> > > > >>>>>>
> > > > >>>>>>> here.
> > > > >>>>>>>>
> > > > >>>>>>>> On 24 May 2017 at 13:31, James Carman
<
> > > james@carmanconsulting.com
> > > > >>>>>>>>
> > > > >>>>>>>
> > > > >>>> wrote:
> > > > >>>>>>>
> > > > >>>>>>>>
> > > > >>>>>>>> I think I must be doing something wrong.
 Hopefully one of
> the
> > > > >>>>>>>>>
> > > > >>>>>>>> PAX
> > > > >>>
> > > > >>>> folks
> > > > >>>>>>>
> > > > >>>>>>>> can help here.  I wonder if I should
just reach out to them
> > > > >>>>>>>>>
> > > > >>>>>>>> directly or
> > > > >>>>>>
> > > > >>>>>>> if
> > > > >>>>>>>>
> > > > >>>>>>>>> this is a karaf-specific issue with
PAX?
> > > > >>>>>>>>>
> > > > >>>>>>>>> On Wed, May 24, 2017 at 2:29 PM Matt
Sicker <
> > boards@gmail.com>
> > > > >>>>>>>>>
> > > > >>>>>>>> wrote:
> > > > >>>>>>
> > > > >>>>>>>
> > > > >>>>>>>>> At compile time, an annotation processor
in log4j-core
> > > > >>>>>>>>>>
> > > > >>>>>>>>> generates a
> > > > >>>>
> > > > >>>>> .dat
> > > > >>>>>>>
> > > > >>>>>>>> file containing some metadata about scanned
plugins. These
> JAR
> > > > >>>>>>>>>>
> > > > >>>>>>>>> resource
> > > > >>>>>>>
> > > > >>>>>>>> files are loaded at plugin scan time
where reflection is
> used
> > > > >>>>>>>>>>
> > > > >>>>>>>>> to
> > > > >>>
> > > > >>>> investigate the classes and instantiate plugins based
on
> > > > >>>>>>>>>>
> > > > >>>>>>>>> config
> > > > >>>
> > > > >>>> files.
> > > > >>>>>>>
> > > > >>>>>>>> Alternatively, there's an option you
can set to scan a
> > > > >>>>>>>>>>
> > > > >>>>>>>>> particular
> > > > >>>>
> > > > >>>>> list
> > > > >>>>>>>
> > > > >>>>>>>> of
> > > > >>>>>>>>
> > > > >>>>>>>>> packages for additional plugins,
though I think that uses
> the
> > > > >>>>>>>>>>
> > > > >>>>>>>>> context
> > > > >>>>>>
> > > > >>>>>>> ClassLoader which might not work properly
in your scenario.
> > > > >>>>>>>>>>
> > > > >>>>>>>>>> On 24 May 2017 at 11:22, James
Carman <
> > > > >>>>>>>>>>
> > > > >>>>>>>>> james@carmanconsulting.com
> > > > >>>>
> > > > >>>>>
> > > > >>>>>>> wrote:
> > > > >>>>>>>>>
> > > > >>>>>>>>>>
> > > > >>>>>>>>>> Any advice on how I might be
able to fight my way through
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>> it?
> > > > >>>
> > > > >>>> How
> > > > >>>>>>
> > > > >>>>>>> does
> > > > >>>>>>>>
> > > > >>>>>>>>> Log4j2 "discover" those @Plugin-annotated
classes?  Does it
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>> use
> > > > >>>>
> > > > >>>>> some
> > > > >>>>>>>
> > > > >>>>>>>> form
> > > > >>>>>>>>>
> > > > >>>>>>>>>> of classpath scanning?  Is it
scoped to certain packages
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>> only?
> > > > >>>
> > > > >>>> I'm
> > > > >>>>>>
> > > > >>>>>>> thinking I might have to attach to the pax-logging-log4j2
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>> bundle
> > > > >>>>
> > > > >>>>> as a
> > > > >>>>>>>
> > > > >>>>>>>> host
> > > > >>>>>>>>>>
> > > > >>>>>>>>>>> in order to augment its classpath
so that it can see my
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>> stuff.
> > > > >>>
> > > > >>>>
> > > > >>>>>>>>>>> On Wed, May 24, 2017 at 12:20
PM Matt Sicker <
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>> boards@gmail.com>
> > > > >>>>
> > > > >>>>> wrote:
> > > > >>>>>>>>
> > > > >>>>>>>>>
> > > > >>>>>>>>>>> It could be a bug in log4j2
itself rather than
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>> pax-logging.
> > > > >>>
> > > > >>>> I
> > > > >>>>
> > > > >>>>> worked
> > > > >>>>>>>>
> > > > >>>>>>>>> on
> > > > >>>>>>>>>
> > > > >>>>>>>>>> some OSGi support in log4j2 a
while back, and I'm not sure
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>> if
> > > > >>>>
> > > > >>>>> this
> > > > >>>>>>>
> > > > >>>>>>>> is a
> > > > >>>>>>>>>
> > > > >>>>>>>>>> new
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>>>> issue or an existing
one.
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>>> On 24 May 2017 at 05:43,
James Carman <
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>> james@carmanconsulting.com>
> > > > >>>>>>>
> > > > >>>>>>>> wrote:
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>>> I tried adding pax-logging-service
to startup.properties
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>> (after
> > > > >>>>>>
> > > > >>>>>>> putting
> > > > >>>>>>>>>>
> > > > >>>>>>>>>>> it
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>>>> into the system repo)
and I still have the issue. So,
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>> the
> > > > >>>
> > > > >>>> ultimate
> > > > >>>>>>>>
> > > > >>>>>>>>> issue
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>>>> isn't the fragment host
necessarily. My issue is that it
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>> can't
> > > > >>>>>>
> > > > >>>>>>> fine
> > > > >>>>>>>>
> > > > >>>>>>>>> my
> > > > >>>>>>>>>>
> > > > >>>>>>>>>>> custom layout class. I've
tried using the name from the
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>> @Plugin
> > > > >>>>>>
> > > > >>>>>>> annotation.
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>>>> I've tried using
the fully-qualified class name.
> Nothing
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>> seems
> > > > >>>>>>
> > > > >>>>>>> to
> > > > >>>>>>>
> > > > >>>>>>>> work.
> > > > >>>>>>>>>>
> > > > >>>>>>>>>>> Here's the declaration of
my layout:
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> @Plugin(name = "MyJsonLayout",
category =
> Node.CATEGORY,
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>> elementType
> > > > >>>>>>>>>
> > > > >>>>>>>>>> =
> > > > >>>>>>>>>>
> > > > >>>>>>>>>>> Layout.ELEMENT_TYPE, printObject
= true)
> > > > >>>>>>>>>>>>> public class MyJsonLayout
extends AbstractStringLayout
> {
> > > > >>>>>>>>>>>>> ...
> > > > >>>>>>>>>>>>> }
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> and here's what I've
changed in the logging config
> file:
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> log4j2.rootLogger.appenderRef.RollingFile.ref
=
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>> RollingFile
> > > > >>>>
> > > > >>>>> # Rolling file appender
> > > > >>>>>>>>>>>>> log4j2.appender.rolling.type
= RollingRandomAccessFile
> > > > >>>>>>>>>>>>> log4j2.appender.rolling.name
= RollingFile
> > > > >>>>>>>>>>>>> log4j2.appender.rolling.fileName
=
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>> ${karaf.home}/log/aetos.log
> > > > >>>>>>
> > > > >>>>>>> log4j2.appender.rolling.filePattern =
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>> ${karaf.home}/log/aetos.log.%i
> > > > >>>>>>>>>
> > > > >>>>>>>>>> # uncomment to not force a disk
flush
> > > > >>>>>>>>>>>>> log4j2.appender.rolling.immediateFlush
= false
> > > > >>>>>>>>>>>>> log4j2.appender.rolling.append
= true
> > > > >>>>>>>>>>>>> log4j2.appender.rolling.layout.type
=
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>> com.myco.log4j.json.MyJsonLayout
> > > > >>>>>>>>>>
> > > > >>>>>>>>>>> log4j2.appender.rolling.policies.type
= Policies
> > > > >>>>>>>>>>>>> log4j2.appender.rolling.policies.size.type
=
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>> SizeBasedTriggeringPolicy
> > > > >>>>>>>>>>
> > > > >>>>>>>>>>> log4j2.appender.rolling.policies.size.size
= 200MB
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> As I said, I tried
just using layout.type =
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>> MyJsonLayout,
> > > > >>>
> > > > >>>> but
> > > > >>>>>>
> > > > >>>>>>> that
> > > > >>>>>>>>
> > > > >>>>>>>>> doesn't
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>>>> work either.  Do
we have an example where something
> like
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>> this
> > > > >>>>>>
> > > > >>>>>>> works
> > > > >>>>>>>>
> > > > >>>>>>>>> that
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>>>> I
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>>>> can reverse engineer?
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> Thanks,
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> James
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> On Tue, May 23, 2017
at 7:03 PM James Carman <
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>> james@carmanconsulting.com
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>>>> wrote:
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> I am trying to use
a custom layout and I'm following
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> the
> > > > >>>
> > > > >>>> examples
> > > > >>>>>>>>
> > > > >>>>>>>>> (I
> > > > >>>>>>>>>>
> > > > >>>>>>>>>>> think).  We had one that
worked in Karaf 3.0.x.
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> Anyway, I
> > > > >>>>
> > > > >>>>> set
> > > > >>>>>>>
> > > > >>>>>>>> up
> > > > >>>>>>>>
> > > > >>>>>>>>> the
> > > > >>>>>>>>>>
> > > > >>>>>>>>>>> fragment host like this:
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>> <plugin>
> > > > >>>>>>>>>>>>>>    <groupId>org.apache.felix</groupId>
> > > > >>>>>>>>>>>>>>    <artifactId>maven-bundle-plugin</artifactId>
> > > > >>>>>>>>>>>>>>    <version>3.3.0</version>
> > > > >>>>>>>>>>>>>>    <extensions>true</extensions>
> > > > >>>>>>>>>>>>>>    <inherited>true</inherited>
> > > > >>>>>>>>>>>>>>    <configuration>
> > > > >>>>>>>>>>>>>>      <instructions>
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>
> > > > >>>>>>>> <Fragment-Host>org.ops4j.pax.logging.pax-logging-service</
> > > > >>>>>>
> > > > >>>>> Fragment-Host>
> > > > >>>>
> > > > >>>>>      </instructions>
> > > > >>>>>>>>>>>>>>    </configuration>
> > > > >>>>>>>>>>>>>> </plugin>
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>> However, my bundle
will not resolve this way. I don't
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> see
> > > > >>>>
> > > > >>>>> that
> > > > >>>>>>>
> > > > >>>>>>>> bundle
> > > > >>>>>>>>>>
> > > > >>>>>>>>>>> being loaded in Karaf 4.1.1:
> > > > >>>>>>>>>>>>>>   karaf@root()>
list -t 0 -s | grep -i log 19:01:18
> > > > >>>>>>>>>>>>>>   5 │ Active
│ 8 │ 1.9.1 │ org.ops4j.pax.logging.pax-
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> logging-api
> > > > >>>>>>>
> > > > >>>>>>>>   6 │ Active │ 8 │ 1.9.1 │ org.ops4j.pax.logging.pax-
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> logging-log4j2
> > > > >>>>>>>>>
> > > > >>>>>>>>>> 36 │ Active │ 30 │ 4.1.1
│ org.apache.karaf.log.core
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>> I tried binding
to
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> "org.ops4j.pax.logging.pax-logging-api",
> > > > >>>>>>
> > > > >>>>>>> but
> > > > >>>>>>>
> > > > >>>>>>>> that
> > > > >>>>>>>>>>
> > > > >>>>>>>>>>> didn't work either.  Did
this process change for
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> 4.1.x?
> > > > >>>
> > > > >>>>
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>>> --
> > > > >>>>>>>>>>>> Matt Sicker <boards@gmail.com>
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>>
> > > > >>>>>>>>>>
> > > > >>>>>>>>>> --
> > > > >>>>>>>>>> Matt Sicker <boards@gmail.com>
> > > > >>>>>>>>>>
> > > > >>>>>>>>>>
> > > > >>>>>>>>>
> > > > >>>>>>>>
> > > > >>>>>>>>
> > > > >>>>>>>> --
> > > > >>>>>>>> Matt Sicker <boards@gmail.com>
> > > > >>>>>>>>
> > > > >>>>>>>>
> > > > >>>>>>>
> > > > >>>>>>
> > > > >>>>>>
> > > > >>>>>> --
> > > > >>>>>> Matt Sicker <boards@gmail.com>
> > > > >>>>>>
> > > > >>>>>>
> > > > >>>>>
> > > > >>>>
> > > > >>>
> > > > >>>
> > > > >>> --
> > > > >>> Matt Sicker <boards@gmail.com>
> > > > >>>
> > > > >>>
> > > > >>
> > > > > --
> > > > > Jean-Baptiste Onofré
> > > > > jbonofre@apache.org
> > > > > http://blog.nanthrax.net
> > > > > Talend - http://www.talend.com
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Matt Sicker <boards@gmail.com>
> > > >
> > >
> >
> >
> >
> > --
> > Matt Sicker <boards@gmail.com>
> >
>



-- 
------------------------
Guillaume Nodet

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message