in gshell/gshell-log/src/main/java/org/apache/servicemix/kernel/gshell/log/SetLogLevel.java [50:112]
protected Object doExecute() throws Exception {
if (ROOT_LOGGER.equalsIgnoreCase(this.logger)) {
this.logger = null;
}
if (!TRACE.equals(level) &&
!DEBUG.equals(level) &&
!INFO.equals(level) &&
!WARN.equals(level) &&
!ERROR.equals(level) &&
!INHERITED.equals(level)) {
io.err.println("level must be set to TRACE, DEBUG, INFO, WARN or ERROR (or - to unset it)");
return Result.FAILURE;
}
if (INHERITED.equals(level) && logger == null) {
io.err.println("Can not unset the ROOT logger");
return Result.FAILURE;
}
ConfigurationAdmin cfgAdmin = getConfigAdmin();
Configuration cfg = cfgAdmin.getConfiguration(CONFIGURATION_PID, null);
Dictionary props = cfg.getProperties();
String logger = this.logger;
String val;
String prop;
if (logger == null) {
prop = ROOT_LOGGER_PREFIX;
} else {
prop = LOGGER_PREFIX + logger;
}
val = (String) props.get(prop);
if (INHERITED.equals(level)) {
if (val != null) {
val = val.trim();
int idx = val.indexOf(",");
if (idx > 0) {
val = val.substring(idx);
} else {
val = null;
}
}
} else {
if (val == null) {
val = level;
} else {
val = val.trim();
int idx = val.indexOf(",");
if (idx == 0) {
val = level + val;
} else if (idx > 0) {
val = level + val.substring(idx);
}
}
}
if (val == null) {
props.remove(prop);
} else {
props.put(prop, val);
}
cfg.update(props);
return Result.SUCCESS;
}