2019独角兽企业重金招聘Python工程师标准>>>

直接看代码。

import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.Level;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;@Controller
@RequestMapping(value = "/log4j")
public class Log4jController {private Map<String, Logger> log4jLoggers = new HashMap<>();private Map<String, AppenderSkeleton> log4jAppenders = new HashMap<>();@PostConstructpublic void init() {loadLog4j();}private void loadLog4j() {Enumeration<?> loggers = LogManager.getLoggerRepository().getCurrentLoggers();//获取所有loggerwhile (loggers.hasMoreElements()) {Object elem = loggers.nextElement();if (elem instanceof org.apache.log4j.Logger) {org.apache.log4j.Logger log4j = (org.apache.log4j.Logger) elem;log4jLoggers.put(log4j.getName(), log4j);Enumeration<?> allAppenders = log4j.getAllAppenders();//获取logger相关的appenderwhile (allAppenders.hasMoreElements()) {Object apd = allAppenders.nextElement();if (apd instanceof AppenderSkeleton) {AppenderSkeleton appender = (AppenderSkeleton) apd;log4jAppenders.put(appender.getName(), appender);}}}}}@RequestMapping(value = "/setLoggerLevel")@ResponseBodypublic String setLoggerLevel(HttpServletRequest request) {String logName = request.getParameter("name");String levelStr = request.getParameter("level");Level level = Level.toLevel(levelStr, null);org.apache.log4j.Logger log4j = log4jLoggers.get(logName);if (log4j == null) {return "没有相应的logger[" + logName + "]存在";}if (level == null) {return "没有相应的日志级别[" + levelStr + "]存在";}log4j.setLevel(level);return "将日志logger[" + logName + "]设置为" + level.toString() + "模式";}@RequestMapping(value = "/setAppenderLevel")@ResponseBodypublic String setAppenderLevel(HttpServletRequest request) {String appenderName = request.getParameter("name");String levelStr = request.getParameter("level");Level level = Level.toLevel(levelStr, null);Response response = new Response();AppenderSkeleton appender = log4jAppenders.get(appenderName);if (appender == null) {return "没有相应的appender[" + appenderName + "]存在";}if (level == null) {return "没有相应的日志级别[" + levelStr + "]存在";}appender.setThreshold(level);return "将日志appender[" + appenderName + "]设置为" + level.toString() + "模式";}
}

转载于:https://my.oschina.net/linchuhao23/blog/2248901

通过url来设置log4j的记录级别相关推荐

  1. Spring Cloud 设置Feign的日志记录级别

    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-c ...

  2. Hibernate Log4j日志记录

    Hibernate Log4j日志记录 欢迎来到Hibernate Log4j Logging示例.Hibernate 4在旧的hibernate版本中使用JBoss日志而不是slf4j.今天我们将研 ...

  3. 【ELK】ELK菜鸟手记 (一) 环境配置+log4j日志记录——转自Master HaKu

    感谢Master HaKu的分享,博客园的账号忘了,文章里面有原文链接,尊重原创 ELK菜鸟手记 (一) 环境配置+log4j日志记录 - Master HaKu - 博客园 Master HaKu ...

  4. log4j日志记录级别是如何工作?

    级别p的级别使用q,在记录日志请求时,如果p>=q启用.这条规则是log4j的核心.它假设级别是有序的.对于标准级别它们关系如下:ALL < DEBUG < INFO < WA ...

  5. log4j的日志级别(ssm中log4j的配置)

    log4j定义了8个级别的log(除去OFF和ALL,可以说分为6个级别),优先级从高到低依次为:OFF.FATAL.ERROR.WARN.INFO.DEBUG.TRACE. ALL. 1. ALL ...

  6. 更改日志级别_如何在运行时更改日志记录级别

    更改日志级别 在运行时中更改日志记录级别非常重要,这主要在生产环境中非常重要,在生产环境中,您可能希望在有限的时间内进行调试日志记录. 好了,更改根记录器非常简单–假设您有一个具有所需记录级别的输入参 ...

  7. 如何在运行时更改日志记录级别

    在运行时中更改日志记录级别很重要,这主要在生产环境中非常重要,在生产环境中,您可能希望在有限的时间内进行调试日志记录. 好了,更改根记录器非常简单–假设您有一个具有所需记录级别的输入参数,只需获取根记 ...

  8. springmvc 项目完整示例05 日志 --log4j整合 配置 log4j属性设置 log4j 配置文件 log4j应用...

    log4j 就是log for java嘛,老外都喜欢这样子,比如那个I18n  ---internationalization  不就是i和n之间有18个字母... http://logging.a ...

  9. Log4j日志的级别与使用

    1.日志的级别: 我们现在要调用logger的方法,不过在这个Logger对象中,有很多方法,所以要先了解log4j的日志级别,log4j规定了默认的几个级别:trace<debug<in ...

最新文章

  1. 1033 To Fill or Not to Fill (25 分)
  2. 个推用户画像的实践与应用
  3. 类继承(c++细节篇六)
  4. CSS样式为什么放在head中,而不放在body底部
  5. 批量修改表的所有者对象
  6. 数据连接池druid 和 大数据框架druid
  7. Python 实现简单的爬虫
  8. python判断序列值横穿整个区间的次数
  9. 旷视科技IPO过会,AI技术“立业”难言轻松
  10. java 比较器类_高级编程之(Java常用类(Java比较器))
  11. oracle报错12516,Oracle连接数太多报错-ORA-12516异常
  12. Windows2012安装AppFabric失败返回1603错误的解决方案
  13. php 获取服务器端口,PHP获取当前服务器详细信息
  14. 微信小程序:万圣节头像框生成工具
  15. 如何在word左侧显示目录
  16. 网站建设需要怎么做?个人网站建设教程
  17. Mysql大数据优化方案
  18. Java每日一练(1)
  19. 夜雨数竞笔记-定积分(1)-区间再现公式
  20. 浅入浅出游戏粒子系统

热门文章

  1. 返回一个循环整数组最大子数组和
  2. 操作Checkbox标签
  3. ORA-28547 连接服务器失败,可能是Oracle Net 管理错误
  4. 完美完全卸载Oracle 11g数据库
  5. FlashCache初体验
  6. 〖Windows〗Linux的Qt程序源码转换至Windows平台运行,编码的解决
  7. 《信息存储与管理》读书笔记7 存储虚拟化
  8. java数据结构与算法_清华大学出版社-图书详情-《数据结构与算法分析(Java版)》...
  9. java 接口编程_JAVA面向接口编程
  10. PHP实现微信随机红包算法和微信红包的架构设计简介