On Mon, Mar 11, 2024 at 11:33 PM Grzegorz Grzybek <[email protected]> wrote:
> Hello > > Pax Logging (where pax-logging-api contains and exports Logging APIs, > while pax-logging-log4j2 is the Log4j2-based implementation) has enormous > amount of effort put into integration of very different logging packages > and it is used by Apache Karaf among others. > > The team developed Pax Logging for many years trying to maintain old APIs > and include new ones. Among others, there's one consequence of this - > either you use Pax Logging and accept some (workarounds possible) > limitation or you craft your own set of bundles approaching what Pax > Logging does anyway. > > Your issue is simple - your "caterwaul-connect-core" bundle imports > "org.apache.logging.log4j.core" which is simply NOT exported by > pax-logging-log4j2. This (at first glance) means you NEED actual Log4j2 > bundles installed. > > However - are you sure your "caterwaul-connect-core" bundle really needs > this package? is it implementing custom appenders/layouts/plugins? If so, > it's better (and Pax Logging contains relevant examples) to create a > fragment bundle attached to pax-logging-log4j2 bundle. > > Hi, thanks for getting back. Yes, it seems that the code is doing a couple of things. One is creating its own appender, and another it seems to be looking at different kinds of events that contain raw logging information, so it's using some of the classes to extract information from those. So, for this fragment, do I simply need to make a fragment containing the extra log4j information, or do I need to extract the code that is using those log4j pieces and put that into a fragment. That seems to be a much taller order. Compared to bolting the necessary log4j.core classes onto the pax bundle so that those classes are then available to everyone from the pax bundles classloader. Thanks! Regards, Will Hartung
