Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [corona-dev] Corona Logging - log4j.properties visibility

I have a problem with visibility of log4j properties inside bundle.

I’ve created log4j listener converting osgi log events into log4j logs.

I have sample bundle activator with start method as follows:

 

public void start(BundleContext context) throws Exception {

           

            logServiceTracker =

                  new ServiceTracker(context, LogService.class.getName(), null);

            logReaderServiceTracker =

                  new ServiceTracker(context, LogReaderService.class.getName(), null);

           

            logServiceTracker.open();

            logReaderServiceTracker.open();

           

            LogService logService = (LogService)logServiceTracker.getService();

            LogReaderService logReaderService = (LogReaderService)logReaderServiceTracker.getService();

           

            System.out.println("logService: " + logService + ", logReaderService: " + logReaderService);

           

            if (logReaderService != null) {                

                  Log4jListener log4jListener = new Log4jListener(Logger.getLogger(edka.test.Activator.class.getName()));

                  logReaderService.addLogListener(log4jListener);

                  System.out.println("adding log listener to log reader service...");

            }

            if (logService != null) {

                  logService.log(LogService.LOG_INFO, "Starting edka test activator");

                  System.out.println("adding log to log service...");

            }

            if (logReaderService != null) {

                  Enumeration logEnum = logReaderService.getLog();

                  System.out.println("###########logEnum: " + logEnum);

                  while (logEnum.hasMoreElements()) {

                        System.out.println(((LogEntry)(logEnum.nextElement())).getMessage());

                  }                

            }

           

      }

 

My log4j.properties file contains:

 

log4j.rootCategory=INFO, test

log4j.rootLogger=INFO, test

log4j.logger.edka.test.Activator=INFO, test

 

log4j.appender.test=org.apache.log4j.FileAppender

log4j.appender.test.File=C:\\Temp\\edka_test.log

log4j.appender.test.layout=org.apache.log4j.PatternLayout

log4j.appender.test.layout.ConversionPattern=%p %t %c - %m%n

 

I receive such output running this Activator:

osgi> logService: org.eclipse.equinox.log.LogServiceImpl@1319c, logReaderService: org.eclipse.equinox.log.LogReaderService@6025e7

##Log4jListener constructor...

log4j:WARN No appenders could be found for logger (edka.test.Activator).

log4j:WARN Please initialize the log4j system properly.

adding log listener to log reader service...

##logged method called with logEntry: Starting edka test activator

adding log to log service...

###########logEnum: org.eclipse.equinox.log.Activator$1@10e3293

Starting edka test activator

BundleEvent STARTED

BundleEvent STARTED

BundleEvent STARTED

BundleEvent STARTED

BundleEvent STARTED

BundleEvent STARTED

BundleEvent STARTED

BundleEvent STARTED

BundleEvent STARTED

ServiceEvent REGISTERED

BundleEvent STARTED

BundleEvent STARTED

ServiceEvent REGISTERED

BundleEvent STARTED

ServiceEvent REGISTERED

BundleEvent STARTED

ServiceEvent REGISTERED

ServiceEvent REGISTERED

BundleEvent STARTED

ServiceEvent REGISTERED

BundleEvent STARTED

ServiceEvent REGISTERED

FrameworkEvent INFO

BundleEvent STARTED

BundleEvent STARTED

BundleEvent STARTED

ServiceEvent REGISTERED

ServiceEvent REGISTERED

ServiceEvent REGISTERED

Log created; Log Size=100; Log Threshold=4

 

I assume the problem is with the visibility of log4j.properties – this is located now on the same level as build.properties.

Any idea what should be changed to have it working correctly ?

 

Edyta

 

The contents of this e-mail are intended for the named addressee only. It contains information that may be confidential. Unless you are the named addressee or an authorized designee, you may not copy or use it, or disclose it to anyone else. If you received it in error please notify us immediately and then destroy it.

Back to the top