Kraken Logging
- Kraken Core's logging system integrates Felix logging, OSGi logging and slf4j logging.
How Integrated Logging Works?
- Felix default logger replacement
- Kraken embeds Felix framework and start it at boot()
- Felix constructor has a config map parameter.
- FelixConstants.LOG_LOGGER_PROP(felix.log.logger) config is set to org.slf4j.Logger
- OSGi Log Service implementation
- Kraken Core registers KrakenLogService as an OSGi Log Service.
context.registerService(LogService.class.getName(), new KrakenLogService(), null);
- KrakenLogService implements org.osgi.service.log.LogService.
- All logs are passed to org.apache.felix.framework.Logger.
- Then felix logger will send all logs to slf4j logger.
- Kraken Core registers KrakenLogService as an OSGi Log Service.
- SLF4J logging
- KrakenLogger acts as felix logger and slf4j logger.
- extends org.apache.felix.framework.Logger
@Override protected void doLog(ServiceReference sr, int level, String msg, Throwable throwable) { internalLog(level, msg, throwable); }
- extends org.apache.felix.framework.Logger
- implements org.slf4j.Logger
- KrakenLogger acts as felix logger and slf4j logger.
Trace Log in Kraken Console
- You can view logs in realtime using the logger.tail command.
- INFO to FATAL log level by default.
- Press Ctrl-C if you want to stop.
kraken> logger.tail ======= Tailing ======== [2009-09-09 00:40:10.838 INFO ] console opened from: /127.0.0.1:3531 ... waiting monitor stop.. interrupted.
- If you want trace or debug logging, you should set logger.
- You can list all loggers or filter loggers by prefix matching
kraken> logger.list ================== Logger List ================== org.apache.felix.framework.Felix org.krakenapps.bundle.BundleManager org.krakenapps.console.ConsoleHandler org.krakenapps.main.Kraken ... kraken> logger.list org.apache.felix ================== Logger List ================== org.apache.felix.framework.Felix
- Set logger using the logger.set command
kraken> logger.set org.apache.felix.framework.Felix debug on
- You can also turn off specific log level
kraken> logger.set org.apache.felix.framework.Felix debug off
- You can list all loggers or filter loggers by prefix matching
How to use SLF4J in my project?
- Kraken Core implements and exports org.slf4j.impl package. (version 1.5.6)
- You can add slf4j-api 1.5.6 and use slf4j api.
<dependencies> ... <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.5.6</version> </dependency> ... </dependencies>
- But you SHOULD NOT add any slf4j implementation to dependencies.
- You can add slf4j-api 1.5.6 and use slf4j api.
