Hello,

 
I want to use Log4J2 in my Eclipse 3.7.2 RCP application. 

Log4J2 has a problem finding my appender „AppenderTest“. Without running the 
code in RCP my code worked.

 
 
2020-08-14 13:06:29,431 main DEBUG Took 0,221691 seconds to load 0 plugins from 
package com.my.rcp.application.logging

2020-08-14 13:06:29,440 main ERROR Unable to locate plugin type for AppenderTest

 
It obviously has problems finding the „plugin“.

 
In the users guide they explained that the PluginManager locates plugins by 
looking in five places. The second entry is:

(OSGi only) Serialized plugin listing files in each active OSGi bundle.

 
Can someone tell me how it is realized? I cannot find any detailed information.

 
Regards,

Florian

 
This is my code:

 
Method in Activator of Eclipse-PlugIn:

 
private void configureLog4J2() {

            ConfigurationBuilder<BuiltConfiguration> builder = 
ConfigurationBuilderFactory.newConfigurationBuilder();

            builder.setStatusLevel(Level.ALL);

            

            // Add GLP appender

            builder.setPackages("com.my.rcp.application.logging");

            AppenderComponentBuilder appenderBuilder = 
builder.newAppender("Appender", "AppenderTest");

            builder.add(appenderBuilder);

            

            // Add GLP logger

            
builder.add(builder.newLogger("com.my.rcp.application.logger.test").add(builder.newAppenderRef("Appender")).addAttribute("additivity",
 false));

            

            // Initialize

            Configurator.initialize(builder.build());

      }

 
Appender class:

 
@Plugin(name = "AppenderTest", category = "Core", elementType = "appender", 
printObject = true)

public class AppenderTest extends AbstractAppender {

      

      private static AppenderTest  instance;

      

      protected AppenderTest (String name, Filter filter, Layout<? extends 
Serializable> layout) {

            super(name, filter, layout, false, Property.EMPTY_ARRAY);

      }

      

      @Override

      public void append(LogEvent logEvent) {

            // do something

      }

      

      @PluginFactory

      public static AppenderGlp createAppender(@PluginAttribute("name") String 
name, @PluginAttribute("ignoreExceptions") boolean ignoreExceptions, 
@PluginElement("Layout") Layout<? extends Serializable> layout, 
@PluginElement("Filters") Filter filter) {

            if(layout == null)

                  layout = PatternLayout.createDefaultLayout();

            instance = new AppenderGlp(name, filter, layout);

            return instance;

      }

      

}

 

Reply via email to