动态的修改线上环境的日志级别,在分布式环境,一次修改一台,改变的途径有:
(1)通过http访问,处理请求,改变日志级别。可以使用轻量级的httpServer(推荐 NanoHTTPD)监听指定端口,http请求ip,访问到具体的机器上修改日志级别。
(2)通过请求Zookeeper,修改节点上的日志级别信息,修改指定ip的日志级别。
修改日志级别的代码:
public static void main(String[] args) {
// 获取日志类型
String type = StaticLoggerBinder.getSingleton().getLoggerFactoryClassStr();
System.out.println(type);
// 获取日志内部状态信息
LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory();
// 获取所有的logger
List<ch.qos.logback.classic.Logger> list = lc.getLoggerList();
System.out.println("before---"+JsonUtil.toJSONString(list));
// 更改日志级别
list.get(0).setLevel(Level.INFO);
System.out.println("after---"+JsonUtil.toJSONString(lc.getLoggerList()));
// 使用StatusPrinter打印日志内部状态
StatusPrinter.print(lc);
// 看下默认的日志格式
logger.info("DesUtils -> main, args= test.test");
}
NanoHTTPD:
GitBub: https://github.com/NanoHttpd/nanohttpd
CSDN: https://blog.csdn.net/qincidong/article/details/82656569