Hallo,
ich würde gerne log4j in meinen Bundles nutzen und so wie ich das mitbekommen habe, ist Pax Logging dafür der Weg der Wahl. Nun habe ich nach Stunden immer noch nicht herausgefunden, wie man dort die Ausgaben konfiguriert. Das Format ist im Moment unbrauchbar:
Ich hätte ja gerne allerwenigstens Timestamps sowie die Möglichkeit, vernünftig die Log Levels einzustellen - so wie man es eben von einem Logging-Framework gewohnt ist.
Entsprechend der Installationsanleitung habe ich die benötigten Header ins Manifest geschrieben.
Wie konfiguriert man Pax Logging? Die Dokumentation bringt mir nichts, das funktioniert irgendwie nicht. Ich habe es jedenfalls testweise erstmal so probiert ([c]@Validate[/c] kommt von iPojo):
Das wird ignoriert und ich vermute, dass es folgende Meldungen verursacht:
Kleinschreibung der Keys (Properties in OSGi sind ja case-insensitive) bringt keinen Unterschied.
Hat irgendjemand eine Idee, wie man das richtig macht?
ich würde gerne log4j in meinen Bundles nutzen und so wie ich das mitbekommen habe, ist Pax Logging dafür der Weg der Wahl. Nun habe ich nach Stunden immer noch nicht herausgefunden, wie man dort die Ausgaben konfiguriert. Das Format ist im Moment unbrauchbar:
Code:
[Thread-2] DEBUG org.apache.felix.ipojo - ServiceEvent REGISTERED
Entsprechend der Installationsanleitung habe ich die benötigten Header ins Manifest geschrieben.
Wie konfiguriert man Pax Logging? Die Dokumentation bringt mir nichts, das funktioniert irgendwie nicht. Ich habe es jedenfalls testweise erstmal so probiert ([c]@Validate[/c] kommt von iPojo):
Java:
@Validate
protected void setupLogging() {
try {
Configuration conf = configAdmin.getConfiguration("org.ops4j.pax.logging", null);
@SuppressWarnings("unchecked")
Dictionary<String, String> props = conf.getProperties();
System.err.println("current props: " + props);
if(props == null) {
props = new Hashtable<String, String>();
}
props.put("log4j.rootLogger", "INFO, A1");
props.put("log4j.appender.A1", "org.apache.log4j.ConsoleAppender");
props.put("log4j.appender.A1.layout", "org.apache.log4j.PatternLayout");
props.put("log4j.appender.A1.layout.ConversionPattern", "%d [%t] %-5p %c - %m%n");
conf.update(props);
} catch (IOException e) {
e.printStackTrace();
}
}
Code:
current props: {log4j.appender.a1.layout=org.apache.log4j.PatternLayout, service.pid=org.ops4j.pax.logging, log4j.rootlogger=INFO, A1, log4j.appender.a1=org.apache.log4j.ConsoleAppender, log4j.appender.a1.layout.conversionpattern=%d [%t] %-5p %c - %m%n}
[CM Configuration Updater (Update: pid=org.ops4j.pax.logging)] ERROR org.apache.felix.configadmin - Cannot use configuration org.ops4j.pax.logging for [org.osgi.service.log.LogService, org.knopflerfish.service.log.LogService, org.ops4j.pax.logging.PaxLoggingService, org.osgi.service.cm.ManagedService, id=32, bundle=46]: Configuration bound to bundle file:/pfad/zu/meinem/bundle.jar
Kleinschreibung der Keys (Properties in OSGi sind ja case-insensitive) bringt keinen Unterschied.
Hat irgendjemand eine Idee, wie man das richtig macht?