2008/4/28, Guillaume Nodet <[EMAIL PROTECTED]>:
> I'm trying to create a bundle that would be able to store the last log
>  entries and display them somehow.
>  I first looked at the Osgi log service api, but the informations are
>  not sufficient imho, so I'm now trying to retrieve the log4j events
>  directly.

I use something like this:

import java.util.ArrayList;
import java.util.List;

import org.osgi.framework.BundleContext;
import org.osgi.service.log.LogEntry;
import org.osgi.service.log.LogListener;
import org.osgi.util.tracker.ServiceTracker;

public class LogAnalyzer {

  private ServiceTracker logReaderServiceTracker;
  private List<LogEntry> allLogs = new ArrayList<LogEntry>();

  public void open(BundleContext context) {
    LogListener logListener = new LogListener() {

      @Override
      public void logged(LogEntry logEntry) {
        try {
          processLog(logEntry);
        } catch (RuntimeException e) {
          System.err.println("RuntimeException in
LogAnalyzer.processLog:" + e.getMessage());
          e.printStackTrace(System.err);
        } catch (Exception e) {
          System.err.println("Exception in LogAnalyzer.processLog:" +
e.getMessage());
          e.printStackTrace(System.err);
        }
      }
    };
    logReaderServiceTracker = new LogReaderServiceTracker(context, logListener);
    logReaderServiceTracker.open();
  }

  public void close() {
    logReaderServiceTracker.close();
  }

  private void processLog(LogEntry logEntry) {
    allLogs.add(logEntry);
  }
}


-- 
Damian

_______________________________________________
general mailing list
general@lists.ops4j.org
http://lists.ops4j.org/mailman/listinfo/general

Reply via email to