在线修改Log级别


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);
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值