org.apache.juli.logging.ch.qos.logback.classic.model.processor.LevelModelHandler Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of tomcat10-slf4j-logback Show documentation
Show all versions of tomcat10-slf4j-logback Show documentation
Tomcat10 Slf4j Logback Integration
package org.apache.juli.logging.ch.qos.logback.classic.model.processor;
import static org.apache.juli.logging.ch.qos.logback.core.joran.JoranConstants.INHERITED;
import static org.apache.juli.logging.ch.qos.logback.core.joran.JoranConstants.NULL;
import org.apache.juli.logging.ch.qos.logback.classic.Level;
import org.apache.juli.logging.ch.qos.logback.classic.Logger;
import org.apache.juli.logging.ch.qos.logback.classic.model.LevelModel;
import org.apache.juli.logging.ch.qos.logback.core.Context;
import org.apache.juli.logging.ch.qos.logback.core.model.Model;
import org.apache.juli.logging.ch.qos.logback.core.model.processor.ModelHandlerBase;
import org.apache.juli.logging.ch.qos.logback.core.model.processor.ModelHandlerException;
import org.apache.juli.logging.ch.qos.logback.core.model.processor.ModelInterpretationContext;
import org.apache.juli.logging.ch.qos.logback.core.spi.ErrorCodes;
public class LevelModelHandler extends ModelHandlerBase {
boolean inError = false;
public LevelModelHandler(Context context) {
super(context);
}
static public ModelHandlerBase makeInstance(Context context, ModelInterpretationContext ic) {
return new LevelModelHandler(context);
}
@Override
protected Class getSupportedModelClass() {
return LevelModel.class;
}
@Override
public void handle(ModelInterpretationContext mic, Model model) throws ModelHandlerException {
Object o = mic.peekObject();
if (!(o instanceof Logger)) {
inError = true;
addError("For element , could not find a logger at the top of execution stack.");
return;
}
Logger l = (Logger) o;
String loggerName = l.getName();
LevelModel levelModel = (LevelModel) model;
String levelStr = mic.subst(levelModel.getValue());
if (INHERITED.equalsIgnoreCase(levelStr) || NULL.equalsIgnoreCase(levelStr)) {
if(Logger.ROOT_LOGGER_NAME.equalsIgnoreCase(loggerName))
addError(ErrorCodes.ROOT_LEVEL_CANNOT_BE_SET_TO_NULL);
else
l.setLevel(null);
} else {
l.setLevel(Level.toLevel(levelStr, Level.DEBUG));
}
addInfo(loggerName + " level set to " + l.getLevel());
}
}