X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=liblttng-ust-jul%2Forg%2Flttng%2Fust%2Fjul%2FLTTngLogHandler.java;h=b4e1c088423a5a2e68f491b07ff9c24c528c97f7;hb=3c3a0129d36e41b4c007ab008f603813efbb66ac;hp=f61677d0b3b270e96a07fef07a817ef73f00c33c;hpb=5b5ffa03ce2a490ddf34d3715c21c7b633567b9a;p=lttng-ust.git diff --git a/liblttng-ust-jul/org/lttng/ust/jul/LTTngLogHandler.java b/liblttng-ust-jul/org/lttng/ust/jul/LTTngLogHandler.java index f61677d0..b4e1c088 100644 --- a/liblttng-ust-jul/org/lttng/ust/jul/LTTngLogHandler.java +++ b/liblttng-ust-jul/org/lttng/ust/jul/LTTngLogHandler.java @@ -22,6 +22,7 @@ import java.util.logging.Handler; import java.util.logging.LogRecord; import java.util.logging.LogManager; import java.util.logging.Level; +import java.util.ArrayList; import java.util.HashMap; import org.lttng.ust.jul.LTTngUst; @@ -40,8 +41,11 @@ public class LTTngLogHandler extends Handler { * enabled should use the loglevel/type below. */ public int logLevelUseAll = 0; - public int logLevelAll = 0; - public int logLevelTypeAll; + public ArrayList logLevelsAll = + new ArrayList(); + + /* Am I a root Log Handler. */ + public int is_root = 0; public LogManager logManager; @@ -58,8 +62,25 @@ public class LTTngLogHandler extends Handler { LTTngUst.init(); } - public void setEvent(LTTngEvent event) { - eventMap.put(event.name, event); + /** + * Add event to handler hash map if new. + * + * @return 0 if it did not exist else 1. + */ + public int setEvent(LTTngEvent new_event) { + LTTngEvent event; + + event = eventMap.get(new_event.name); + if (event == null) { + eventMap.put(new_event.name, new_event); + /* Did not exists. */ + return 0; + } else { + /* Add new event loglevel to existing event. */ + event.logLevels.addAll(new_event.logLevels); + /* Already exists. */ + return 1; + } } @Override @@ -78,24 +99,34 @@ public class LTTngLogHandler extends Handler { /* Get back the event if any and check for loglevel. */ event = eventMap.get(logger_name); if (event != null) { - rec_log_level = record.getLevel().intValue(); - ev_log_level = event.logLevel.level; - ev_type = event.logLevel.type; - - switch (ev_type) { - case LTTngLogLevelABI.LOGLEVEL_TYPE_RANGE: - if (ev_log_level <= rec_log_level) { + for (LTTngLogLevel ev_log : event.logLevels) { + /* Get record and event log level. */ + rec_log_level = record.getLevel().intValue(); + ev_log_level = ev_log.level; + + switch (ev_log.type) { + case LTTngLogLevelABI.LOGLEVEL_TYPE_RANGE: + if (ev_log_level <= rec_log_level) { + fire_tp = 1; + } + break; + case LTTngLogLevelABI.LOGLEVEL_TYPE_SINGLE: + if (ev_log_level == rec_log_level) { + fire_tp = 1; + } + break; + case LTTngLogLevelABI.LOGLEVEL_TYPE_ALL: fire_tp = 1; + break; } - break; - case LTTngLogLevelABI.LOGLEVEL_TYPE_SINGLE: - if (ev_log_level == rec_log_level) { - fire_tp = 1; + + /* + * If we match, stop right now else continue to the next + * loglevel contained in the event. + */ + if (fire_tp == 1) { + break; } - break; - case LTTngLogLevelABI.LOGLEVEL_TYPE_ALL: - fire_tp = 1; - break; } } else { /* No loglevel attached thus fire tracepoint. */ @@ -111,9 +142,16 @@ public class LTTngLogHandler extends Handler { * caller is used for the event name, the raw message is taken, the * loglevel of the record and the thread ID. */ - LTTngUst.tracepoint(record.getMessage(), record.getLoggerName(), - record.getSourceClassName(), record.getSourceMethodName(), - record.getMillis(), record.getLevel().intValue(), - record.getThreadID()); + if (this.is_root == 1) { + LTTngUst.tracepointS(record.getMessage(), + record.getLoggerName(), record.getSourceClassName(), + record.getSourceMethodName(), record.getMillis(), + record.getLevel().intValue(), record.getThreadID()); + } else { + LTTngUst.tracepointU(record.getMessage(), + record.getLoggerName(), record.getSourceClassName(), + record.getSourceMethodName(), record.getMillis(), + record.getLevel().intValue(), record.getThreadID()); + } } }