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.