`
wkf41068
  • 浏览: 457307 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

日志界别动态调整2

阅读更多
package ***.cbb.log;

import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.spi.LoggerRepository;

/**
 * 日志级别修改类,可以不停机(tomcat不需要重启)实现对日志记录级别的修改,
 * 并即时生效。
 * @author jianfeng.lu
 *
 */
public final class LogLevelChanger
{
  private static final Logger logger = Logger.getLogger(LogLevelChanger.class);
  private static LogLevelChanger instance;

  public static synchronized LogLevelChanger getInstance()
  {
    if (null == instance)
      instance = new LogLevelChanger();
    return instance;
  }

  public boolean changeLogLevel(String paramString)
  {
    if ((null == paramString) || ("".equals(paramString.trim())))
    {
      logger.warn("[amulog] changeLogLevel() strLevel is empty");
      return false;
    }
    if ("Debug".equalsIgnoreCase(paramString))
    {
      logger.getLoggerRepository().getRootLogger().setLevel(Level.DEBUG);
      return true;
    }
    if ("Info".equalsIgnoreCase(paramString))
    {
      logger.getLoggerRepository().getRootLogger().setLevel(Level.INFO);
      return true;
    }
    if ("Warn".equalsIgnoreCase(paramString))
    {
      logger.getLoggerRepository().getRootLogger().setLevel(Level.WARN);
      return true;
    }
    if ("Error".equalsIgnoreCase(paramString))
    {
      logger.getLoggerRepository().getRootLogger().setLevel(Level.ERROR);
      return true;
    }
    if ("DEFAULT".equalsIgnoreCase(paramString))
    {
      logger.getLoggerRepository().getRootLogger().setLevel(getDefaultLogLevel());
      return true;
    }
    logger.debug("[amulog] changeLogLevel() exit");
    return false;
  }

  private Level getDefaultLogLevel()
  {
    logger.debug("[amulog] getDefaultLogLevel() enter.");
    Level localLevel = null;
    String str = LogMgrHelper.getInstance().getDefaultLogLevel();
    if ("error".equalsIgnoreCase(str))
      localLevel = Level.ERROR;
    else if ("warn".equalsIgnoreCase(str))
      localLevel = Level.WARN;
    else if ("info".equalsIgnoreCase(str))
      localLevel = Level.INFO;
    else if ("debug".equalsIgnoreCase(str))
      localLevel = Level.DEBUG;
    else
      localLevel = Level.ERROR;
    logger.debug("[amulog] getDefaultLogLevel() leave.");
    return localLevel;
  }

  public String getLogLevel()
  {
    String str = logger.getLoggerRepository().getRootLogger().getLevel().toString();
    if ("Debug".equalsIgnoreCase(str))
      str = "Debug";
    if ("Info".equalsIgnoreCase(str))
      str = "Info";
    if ("Warn".equalsIgnoreCase(str))
      str = "Warn";
    if ("Error".equalsIgnoreCase(str))
      str = "Error";
    return str;
  }
}

分享到:
评论

相关推荐

    工会主席在界别组长在座谈会上的发言稿.docx

    工会主席在界别组长在座谈会上的发言稿.docx

    logger:简单 高效 支持日志文件自动切分 过期文件自动删除

    logger简单 高效 支持日志文件自动切分 过期文件自动删除1:支持日志按大小分文件(文件大小支持用户自定义,默认5010241024)2:支持按照用户自己的实际情况选择每天文件保存的数量(默认10)3:支持每天凌晨定时...

    LogBoot演示代码.zip

    logboot是一个基于logback日志实现和slf4j日志接口的,零配置结构化日志管理组件。使用logboot后,您不用再编写logback繁琐的日志配置文件...logboot的关注点是业务界别的应用在开发调试阶段和生产运行阶段的日志管理。

    LogBackSocket服务端演示代码.zip

    logboot是一个基于logback日志实现和slf4j日志接口的,零配置结构化日志管理组件。使用logboot后,您不用再编写logback繁琐的日志配置文件...logboot的关注点是业务界别的应用在开发调试阶段和生产运行阶段的日志管理。

    提案的写作及范文(精品)..doc

    提案范文中,提案者提出要加强界别提案的利用,界别提案是由同一界别的委员共同讨论、整合形成的提案,代表了特定群体的集体意见,往往具有较高的质量和代表性。目前,界别提案的比例相对较低,可能影响了界别在政协...

    2022 步步高 Java 后端 6 面试经验 · .pdf

    5. 注解实现缓存和日志统一处理是怎么做的? 6. SpringBoot 分哪些模块? 7. 项目中的分页是怎么实现的? 8. 项目中都有哪些 SQL 表说一下吧? 数据库 1. 数据库中的锁有哪些? 2. MySQL 的读写分离解决了什么问题...

    spring的思维导图

    主要优spring概念、spring的ioc控制反转、spring的di依赖注入、spring的aop(手动aop、半自动aop、传统aop、基于aspectj的aop)、事务管理(事务的概念、事务的四大特征、事务的隔离界别、事务的引发的问题)、spring...

    自动化测试实施步骤和最佳实践[2]

    最佳步骤自动化测试实施步骤和最佳实践[2]软件测试遵守软件开发的规则你可能了解SEI(软件工程研究所)提出的CMM(能力成熟度模型)。CMM分为5个界别,该模型用来对软件开发组织划分等级。JerryWeinberg(美国著名软件...

    p6机器学习期末理论

    2、进程和线程的区别是什么,至少写出三条? 3、字典常用方法 4、列举四个常见的魔法方法,并写出他们的执行顺序? 5、什么是mysql事务,四大特性和四个隔离界别分别是什么? 6、简述常见数据结构,并说明其特点?...

    正确的提案怎么写——范文..doc

    4. 界别提案:在全会期间,由界别委员讨论并通过。 5. 委员小组提案:由委员小组讨论并通过,可由组长或全体委员签署。 6. 专门委员会提案:由政协的各专门委员会提出,需主任签署。 【提案的规范性要求】 为了...

    logback.xml

    logback常用配置,包含debug、info、warn、error、界别的配置,输出到文件,按照日期建立文件夹

    2019_2020学年高中生物第五章生物的进化第二节生物进化和生物多样性知能演练轻巧夺冠苏教版必修2

    4. 各界生物特征:不同界别的生物有各自的特征,例如,某些生物可能是自养或异养,有些是真核细胞,有的是单细胞或多细胞,部分生物能自由运动,而另一些则营固着生活。 这些知识点涵盖了生物进化的基本历程,包括...

    2019高考生物二轮练习精品资料专题16微生物及发酵工程(名校测试).pdf

    1. **微生物的生命周期阶段**:微生物生长的四个阶段包括调整期、对数期、稳定期和衰亡期。在对数期,微生物代谢活跃,生长速度最快,而衰亡期则会出现代谢减慢、菌体畸形甚至死亡的现象。在稳定期,微生物开始产生...

    如何搭建分布式测试执行系统

    随着一个产品的自动化工作不断深入,自动化的case积累数量持续增长,绝大部分毫无依赖关系的case由于串行运行,测试执行时间达到小时界别,且不易于优化。另外,ci运行时所需机器  1相关说明  1.1背景简介  随着...

    第2章--SQL-Server-2012安装与配置.ppt

    它提供了AlwaysOn、高可用技术,集中了高可用界别的优点,确保企业无需增加成本和提高复杂度,即可实现高级别的可用性和数据保护。 2.1.2 SQL Server 2012数据库特性 SQL Server 2012具有五大特色: 1. AlwaysOn...

    matlab矩阵共轭代码-python-notes:一点区别重点小笔记

    用大括号{}界别 3.算术运算 (1)特殊符号 乘方用**(幂运算) 整除用// (2)比较运算 可以写成3<4<7先计算3<4在计算4<7 (3)逻辑运算符 not and or 4.函数 (1)内建函数 取绝对值函数abs() 四舍五入...

    注重调研方式创新提高建言献策水平.doc

    2. **调研队伍建设**:发挥委员、专家和部门的协同作用,构建"三位一体"的调研团队。重视委员的主体作用,利用界别优势和部门专业性,确保调研的专业和技术含量。 3. **调研组织**:深入调查研究,提前学习相关政策...

Global site tag (gtag.js) - Google Analytics