package xxxx;
import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.impl.Jdk14Logger;
import org.apache.commons.logging.impl.Log4JLogger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SetLogLevel extends Thread {
private static final String MARKER = "<!-- OUTPUT -->";
private static final Logger logger = LoggerFactory
.getLogger(SetLogLevel.class);
private Boolean stopFlag = false;
private static long updateTimer = System.currentTimeMillis();
private static long intervalTime = 300 * 1000;
public void run() {
this.setName("SetLogLevel");
// get init configure
PropertiesParser props = new PropertiesParser("agentlog.properties");
if (props.getProperty("tdbank.interval.time") != null) {
intervalTime = Integer.valueOf(props
.getProperty("tdbank.interval.time"));
}
while (!stopFlag) {
try {
// sleep 5s
Thread.sleep(5000);
if ((System.currentTimeMillis() - updateTimer) < intervalTime) {
continue;
}
} catch (InterruptedException e) {
continue;
}
props = new PropertiesParser("agentlog.properties");
if (props.getProperty("tdbank.interval.time") != null) {
intervalTime = Integer.valueOf(props
.getProperty("tdbank.interval.time"));
}
Map<String, String> allParameter = props.getAllProperties();
for (Entry<String, String> one : allParameter.entrySet()) {
try {
if (!one.getKey().startsWith("tdbank.")) {
logger.debug("setLog" + one.getKey() + " : "
+ one.getValue());
SetLog(one.getKey(), one.getValue());
}
} catch (Exception e) {
logger.error("set log fail" + e);
}
}
updateTimer = System.currentTimeMillis();
}
}
public void stopLogServer() {
stopFlag = true;
}
public static void SetLog(String logName, String level) throws IOException {
if (logName != null) {
Log log = LogFactory.getLog(logName);
logger.debug(MARKER + "Log Class:" + log.getClass().getName());
if (level != null) {
logger.debug(MARKER + "Submitted Level:" + level);
}
if (log instanceof Log4JLogger) {
process(((Log4JLogger) log).getLogger(), level);
} else if (log instanceof Jdk14Logger) {
process(((Jdk14Logger) log).getLogger(), level);
} else {
logger.debug("Sorry, " + log.getClass() + " not supported.");
}
}
}
private static void process(org.apache.log4j.Logger log, String level)
throws IOException {
if (level != null) {
log.setLevel(org.apache.log4j.Level.toLevel(level));
logger.debug(MARKER + "Setting Level to " + level);
}
logger.debug(MARKER + "Effective level: <b>" + log.getEffectiveLevel());
}
private static void process(java.util.logging.Logger log, String level)
throws IOException {
if (level != null) {
log.setLevel(java.util.logging.Level.parse(level));
logger.debug(MARKER + "Setting Level to " + level);
}
java.util.logging.Level lev;
for (; (lev = log.getLevel()) == null; log = log.getParent());
logger.debug(MARKER + "Effective level: " + lev);
}
}
在线修改Log级别
最新推荐文章于 2024-04-27 17:30:34 发布