*
* @param event A LogLevel-specific event from the DataManager
*/
private void handleLogLevelEvent(DataEntryEvent<String, LogLevel> event) {
String eventKey = event.getKey();
LogLevel logLevel = event.getValue();
if ((eventKey == null) || (logLevel == null)) {
return;
}
// TODO:
// The logLevelParameter idea is not yet implemented, but will be the way we will
// distinguish instance-specific set-level and get-level events
// (To be implemented when the concept of InstanceIDs is sorted out)
String[] keyAndParam = eventKey.split(":", 2);
String key = keyAndParam.length > 0 ? keyAndParam[0] : "";
String param = keyAndParam.length > 1 ? keyAndParam[1] : "";
logger.debug("Parsed cached log-level event key: '{}' and param: '{}'", key, param);
if (key.equals(LogLevel.logLevelKey)) {
logger.debug("New java log-level notification: ({}, {})", eventKey, event.getValue());
logger.debug("Setting local java log-level to new (global) value: {}", logLevel.toString());
try {
LoggingUtil.setLocalLogLevel(LogFileSource.JAVA, logLevel);
} catch (Exception ex) {
logger.error("Unable to set logLevel from cache: {}", logLevel.toString());
}
} else if (key.equals(LogLevel.smxlogLevelKey)) {
logger.debug("New smxlog-level notification: ({}, {})", eventKey, event.getValue());
logger.debug("Setting local smxlog-level to new (global) value: {}", logLevel.toString());
try {
LoggingUtil.setLocalLogLevel(LogFileSource.SMX, logLevel);
} catch (Exception ex) {
logger.error("Unable to set smxlogLevel from cache: {}", logLevel.toString());
}
} else if (key.equals(LogLevel.syslogLevelKey)) {
logger.debug("New syslog-level notification: ({}, {})", eventKey, event.getValue());
String syslogLevel = logLevel.getSyslogLevel().name();
logger.debug("Setting local syslog-level to new (global) value: {}", syslogLevel);
try {
NonJavaLogger.setLogLevel(syslogLevel);
} catch (Exception ex) {
logger.error("Unable to set syslogLevel from cache: {}", syslogLevel);
}
} else {
// Check if this is a logging-category specification
Category category = Category.fromString(key);
if (category != null) {
logger.debug("New category-enabled notification: ({}, {})", eventKey, event.getValue());
// If the log-level value is log4j OFF, then the category is disabled; else, category is enabled
if (logLevel.getLevel().equals(Level.OFF)) {
logger.debug("Disabling logging category: {}", category);
Category.enableCategory(category, false);
} else {
logger.debug("Enabling logging category: {}", category);
Category.enableCategory(category, true);