package org.osgi.service.indexer.osgi;
import java.io.PrintStream;
import java.util.Date;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.service.log.LogService;
import org.osgi.util.tracker.ServiceTracker;
class LogTracker extends ServiceTracker<LogService,LogService> implements LogService {
public LogTracker(BundleContext context) {
super(context, LogService.class, null);
}
public void log(int level, String message) {
log(null, level, message, null);
}
public void log(int level, String message, Throwable exception) {
log(null, level, message, exception);
}
public void log(ServiceReference sr, int level, String message) {
log(sr, level, message, null);
}
public void log(ServiceReference sr, int level, String message, Throwable exception) {
LogService log = getService();
if (log != null)
log.log(sr, level, message, exception);
else {
PrintStream stream = (level <= LogService.LOG_WARNING) ? System.err : System.out;
if (message == null)
message = "";
Date now = new Date();
stream.println(String.format("[%-7s] %tF %tT: %s", LogUtils.formatLogLevel(level), now, now, message));
if (exception != null)
exception.printStackTrace(stream);
}
}
}