package org.oddjob.util;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.oddjob.Structural;
import org.oddjob.structural.ChildHelper;
import org.oddjob.structural.StructuralListener;
public class LoggerNode implements Structural {
private final ChildHelper<LoggerNode> children =
new ChildHelper<LoggerNode>(this);
private final String name;
private Logger logger;
public LoggerNode(Logger logger) {
this.logger = logger;
this.name = logger.getName();
}
public LoggerNode(String name) {
this.name = name;
}
public String getLevel() {
if (logger == null) {
return null;
}
Level level = logger.getLevel();
if (level == null) {
return null;
}
else {
return level.toString();
}
}
public void setLevel(String level) {
if (logger == null) {
logger = Logger.getLogger(name);
}
if (level == null || level.length() == 0) {
logger.setLevel(null);
}
else {
logger.setLevel(Level.toLevel(level));
}
}
void addChild(LoggerNode child) {
children.addChild(child);
}
void setLogger(Logger logger) {
this.logger = logger;
}
@Override
public void addStructuralListener(StructuralListener listener) {
children.addStructuralListener(listener);
}
@Override
public void removeStructuralListener(StructuralListener listener) {
children.removeStructuralListener(listener);
}
public String toString() {
return name;
}
public void destroy() {
while (children.size() > 0) {
LoggerNode child = children.removeChildAt(0);
child.destroy();
}
}
}