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级别
猜你喜欢
转载自sznmail.iteye.com/blog/1973753
今日推荐
周排行