问题

有哪些动态更改log4j日志级别的方法,以便我不必重新部署应用程序。在这些情况下,这些变化是永久性的吗?

#1 热门回答(79 赞)

#File Watchdog

Log4j能够观察log4j.xml文件以进行配置更改。如果更改log4j文件,log4j将根据你的更改自动刷新日志级别。有关详细信息,请参阅org.apache.log4j.xml.DOMConfigurator.configureAndWatch(String,long的文档。检查之间的默认等待时间为60秒。由于你直接更改文件系统上的配置文件,因此这些更改将是持久的。你需要做的就是调用DOMConfigurator.configureAndWatch()一次。

注意:由于Thread泄漏,configureAndWatch方法在J2EE环境中使用是不安全的

#JMX

另一种设置日志级别(或通常重新配置)log4j的方法是使用JMX。 Log4j将其记录器注册为JMX MBean。使用应用程序服务器MBeanServer控制台(或JDK的jconsole.exe),你可以重新配置每个单独的记录器。这些更改不是持久性的,并且会在重新启动应用程序(服务器)后重置为配置文件中设置的配置。

自制

如Aaron所述,你可以以编程方式设置日志级别。你可以按照希望的方式在应用程序中实现它。例如,你可以使用GUI来更改日志级别,然后在记录器上调用setLevel()方法。你是否将设置保留在某处取决于你自己。

#2 热门回答(71 赞)

更改日志级别很简单;修改配置的其他部分将提供更深入的方法。

LogManager.getRootLogger().setLevel(Level.DEBUG);

这些变化在4335345352的生命周期中是永久性的。在重新初始化时,将读取并使用配置,因为在运行时设置级别不会持续更改级别。

**更新:**如果你使用的是Log4j 2,则应该删除对电话号码为setLevel的documentation,这可以通过实现类来实现。

API不支持调用logger.setLevel()或类似方法。应用程序应删除这些。 Log4j 2实现类中提供了等效功能,但可能使应用程序容易受到Log4j 2内部更改的影响。

#3 热门回答(3 赞)

可以将Log4j2配置为通过以给定间隔扫描log4j2.xml文件(或等效文件)来刷新其配置。只需将"monitorInterval"参数添加到配置标记即可。请参阅示例log4j2.xml文件的第2行,该文件告诉log4j在上次日志事件超过5秒后重新扫描其配置。

fileName="/var/log/tryIt.log"

filePattern="/var/log/tryIt-%i.log.gz">

...

java log4j 动态配置_动态更改log4j日志级别相关推荐

  1. eclipse编译java项目class文件_动态编译 Java 代码以及生成 Jar 文件

    导读: 最近在看 Flink 源码的时候发现到一段实用的代码,该代码实现了 java 动态编译以及生成 jar 文件.将其进行改进后可以应用到我们的平台上,实现在平台页面上编写 java 代码语句,提 ...

  2. java 手机动态口令_动态密码TOTP的Java实现

    一.HOTP HOTP 算法,全称是"An HMAC-Based One-Time Password Algorithm",是一种基于事件计数的一次性密码生成算法,详细的算法介绍可 ...

  3. mysql数据库搭建动态网站_动态网站搭建之如何配置Mysql数据库连接详细教程讲解...

    众所周知,网站分静态网站和动态网站,那么什么是静态和动态呢?又怎么区分呢? 动态网站体现在网页一般是以asp,jsp,php,aspx等技术编写的网页,但也可以使用URL静态化技术,使网页后缀显示为H ...

  4. java 反射 动态编译_动态编译java源代码和反射调用问题

    我从教程中得到了以下代码: package com.tom.labs; import java.io.IOException; import java.lang.reflect.Method; imp ...

  5. java地图图表动态亮点_动态展示地图和图表

    每年6月底,旧的财年就要结束,新的财年即将开始.这是最繁忙的季节,不仅要对本财年的业绩进行分析和回报,还要制定新财年的计划和目标.如果今年取得了骄人的业绩,在回报时就更要做的尽善尽美.一个出色的Pow ...

  6. java生成动态验证码_动态生成验证码案例

    servlet代码 package cn.guizimo.web.servlet; import javax.imageio.ImageIO; import javax.servlet.Servlet ...

  7. python动态柱状图_动态排名柱状图的两种做法

    受B站拜年祭发射最多的弹幕是什么?视频启发,对日常维护工作中的故障硬件也做了一次盘点.这里介绍两种方法,第一种是Python + Matplotlib:第二种是利用GitHub上现成的"轮子 ...

  8. 动态路由协议_动态路由协议的类别

    动态路由协议 Dynamic routing protocols have been divided into 2 categories i.e Distance vector protocols a ...

  9. java+spring+mysql配置_用spring的beans配置mysql数据库

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www. ...

  10. java调用siri 语言_如何更改Siri的声音,口音,性别和语言

    java调用siri 语言 Most of us are familiar with Siri as an American female voice. What you may not realiz ...

最新文章

  1. recyclerview item点击无效_让你彻底掌握RecyclerView的缓存机制
  2. linux 修改默认路径吗,linux中vsftp修改默认路径
  3. 化境文件上传修改版.可检测任何木马
  4. 云服务器怎么装mysql_云服务器(windows环境)安装mysql图文教程
  5. 首次公开 | 淘系技术总监马鏖谈淘系用户增长
  6. Jsoup设置元素的文本内容
  7. 让年轻程序员少走弯路的14个忠告
  8. canvas 文字颜色_一篇图文学会HTML5的canvas标签,直线曲线文字渐变,统统可以有...
  9. Android IPC(三)AIDL实现跨进程通信
  10. sklearn——一元线性回归
  11. 资源 | 最新版区块链术语表(中英文对照)
  12. adams教程建模仿真实例
  13. 基于中间人攻击给电视盒子安装apk
  14. 一线工程师告诉你嵌入式真实现状与发展前景
  15. 组合数怎么用计算机算方差,投资组合的方差公式是什么?怎么算的
  16. libtorch显存管理示例
  17. IDM下载器下载百度网盘文件
  18. 百度离线地图APIV2.0
  19. git clone 报 “remote: The project you were looking for could not be found.”
  20. python中给变量赋值时、既确定了变量的值_Python 中的变量赋值不需要类型声明,可以直接赋值,通过值来决定变量的类型。_学小易找答案...

热门文章

  1. 用U盘PE启动安装系统教程
  2. MATLAB高斯平顶化,一种高斯光束变换为平顶光束整形透镜的粒子群设计方法与流程...
  3. 第五代移动通信——5G
  4. 在取证过程中,常见的一些注册表键值整理
  5. treeTable树结构表格的使用
  6. HDB3码的编码解释(简单粗暴)
  7. Apache 绿色版本官方版本下载
  8. 德语课堂笔记 之 与食物相关的名词
  9. 微信公众号支付功能开发
  10. PyCharm常用配置和常用插件