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=1ad1171279b271f60d64f2a8a8c22cae1b79a2e5;hpb=2b90f1d34356963d8cac98fb409689a5c3ebd2ac;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 1ad11712..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,8 @@ 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; @@ -61,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 @@ -81,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. */