- 浏览: 7352076 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
在项目中使用到文件变化的监控,在Log4j中同样也有文件监控功能具体实现类为FileWatchdog。当系统启动的时候,加载log4j的时候,记录log4j配置文件最后修改时间,每间隔一段时间,获取log4j的配置文件的最后修改时间如果大于内存中记录最后修改时间,说明log4j配置文件改变。则重新加载log4j配置文件。
log4j变化监控类:
package com.easyway.app.log4j.file; import java.io.File; import org.apache.log4j.helpers.LogLog; /** *log4j源代码分析,在Log4j中同样也有文件监控功能具体实现类为FileWatchdog。 *当系统启动的时候,加载log4j的时候,记录log4j配置文件最后修改时间,每间隔一段时间, *获取log4j的配置文件的最后修改时间如果大于内存中记录最后修改时间,说明log4j配置文件改变。 *则重新加载log4j配置文件。 * @author longgangbai * */ public abstract class FileWatchdog extends Thread { protected FileWatchdog(String filename) { super("FileWatchdog"); delay = 60000L; lastModif = 0L; warnedAlready = false; interrupted = false; this.filename = filename; file = new File(filename); //设置为后台进程 setDaemon(true); //启动开始检查 checkAndConfigure(); } public void setDelay(long delay) { this.delay = delay; } /** * 重新加载log4j配置文件 * */ protected abstract void doOnChange(); /** * 检查log4j配置文件变化的方法 * */ protected void checkAndConfigure() { boolean fileExists; //检查文件是否存在, try { fileExists = file.exists(); } catch (SecurityException e) { LogLog.warn("Was not allowed to read check file existance, file:[" + filename + "]."); interrupted = true; return; } //如果存在获取最后修改时间与内存记录的原最后修改时间比较 if (fileExists) { long l = file.lastModified(); if (l > lastModif) { lastModif = l; doOnChange(); warnedAlready = false; } } else if (!warnedAlready) { LogLog.debug("[" + filename + "] does not exist."); warnedAlready = true; } } /** * 执行执行的方法 */ public void run() { while (!interrupted) { try { //检查的修改时间间隔 Thread.sleep(delay); } catch (InterruptedException e) { } //检查log4j配置 checkAndConfigure(); } } public static final long DEFAULT_DELAY = 60000L; protected String filename; protected long delay; File file; long lastModif; boolean warnedAlready; boolean interrupted; }
log4j.xml配置文件监控类:
package com.easyway.app.log4j.file; import org.apache.log4j.LogManager; import org.apache.log4j.helpers.FileWatchdog; import org.apache.log4j.xml.DOMConfigurator; /** * 针对log4j.xml变化加载的方法 * @author longgangbia * */ public class XMLWatchdog extends FileWatchdog { public XMLWatchdog(String filename) { super(filename); } public void doOnChange() { (new DOMConfigurator()).doConfigure(super.filename, LogManager .getLoggerRepository()); } }
针对log4j.properties文件监控实现类:
package com.easyway.app.log4j.file; import org.apache.log4j.LogManager; import org.apache.log4j.PropertyConfigurator; import org.apache.log4j.helpers.FileWatchdog; /** * 针对log4j.properties变化加载的方法 * @author longgangbia * */ class PropertyWatchdog extends FileWatchdog { PropertyWatchdog(String filename) { super(filename); } public void doOnChange() { (new PropertyConfigurator()).doConfigure(super.filename, LogManager .getLoggerRepository()); } }
发表评论
-
【转】Django resources
2014-01-23 14:35 10845Django resources This page li ... -
使用国内镜像源来加速python pypi包的安装
2014-01-16 11:16 197885pipy国内镜像目前有: http://pypi.d ... -
[转 ]vagrant使用简介
2014-01-10 13:53 257881> 简介: vagrant提供了易于配置,重复性 ... -
[转]在Java中调用Python
2014-01-07 13:08 9241在执行之前都需要把jython对应的包加载进去,这个是必须的 ... -
[转]Eclipse配置PyDev插件
2014-01-02 14:25 2856安装python解释器 安装PyDev: 首 ... -
RestFuse的研究(五) Http请求的封装
2014-06-14 15:50 3677在RestFuse中封装了Http请 ... -
RestFuse的研究(四) Junit的Statement的分析
2013-12-06 11:46 1693在RestFuse提供了多种单 ... -
RestFuse的研究(三) Junit的Rule的使用和分析
2013-12-06 11:01 2257在junit中定义一些可以公用的规则(R ... -
RestFuse的研究(二) Junit的Runner的分类和模式
2013-12-06 10:40 1619在Junit4中的调用JunitCore可以采 ... -
RestFuse的研究(一) HttpJunitRunner的实现
2013-12-06 10:11 1762在RestFuse是一种针对Rest We ... -
[转]An open-source JUnit extension to test HTTP/REST APIs
2013-12-06 09:57 1118http://developer.eclipsesource ... -
TestNG简单的学习(十三)TestNG中Junit的实现
2013-12-04 09:00 3372TestNG和junit的整合 ... -
TestNG简单的学习(十二)TestNG运行
2013-12-03 09:08 51621文档来自官方地址: ... -
TestNG简单的学习(十一)TestNG学习总结
2013-12-03 09:08 14244最近一直在学习关于TestNG方面的知识,根 ... -
TestNG简单的学习(十)TestNG @Listeners 的使用
2013-12-03 09:07 8717TestNG官方网站: http://testng.or ... -
TestNG简单的学习(九)TestNG Method Interceptors 的使用
2013-12-03 09:07 2732TestNG官方网站: http://testng ... -
TestNG简单的学习(八)TestNG Annotation Transformers 的使用
2013-12-03 09:07 2830TestNG官方网站: http://testng.or ... -
TestNG简单的学习(七)TestNG编程方式运行
2013-12-02 09:22 2473TestNG官方网站: http://testng.or ... -
TestNG简单的学习(六)测试工厂注释的使用
2013-12-02 09:22 2807TestNG官方网站: http://testng.or ... -
TestNG简单的学习(五)参数化测试数据的定制
2013-12-02 09:22 2719TestNG官方网站: http://testng.or ...
相关推荐
Log4J的实现原理是通过提供分级的日志记录方法,允许开发者在代码中嵌入日志记录语句,这些语句具有多种输出格式和多个输出级别。这与传统的在代码中插入`System.out.println`或其他输出语句的方式不同,后者往往...
在解压后的"apache-log4j-2.0-rc1"文件夹中,通常包含源代码、库文件、文档和示例,你可以通过这些资源深入了解每个组件的工作原理和使用方法。学习和掌握Log4j 2.0,将有助于你在开发过程中实现高效、可控的日志...
5. **配置Log4j**:在Log4j的配置文件(如log4j.properties或log4j.xml)中,添加你自定义的Appender,并指定相应的Logger。记得为Appender指定名称,以便在代码中引用。 6. **在代码中关联Appender和JTextArea**:...
通过以上内容可以看出,《Pro Apache Log4j 第二版》是一本非常详尽且实用的指南,不仅介绍了Apache Log4j的基本原理和配置方法,还涉及了大量高级特性和实战技巧,非常适合希望深入了解并运用Log4j进行高效日志记录...
4. `bin` - 通常存放编译后的Java类文件或可执行文件,`log4j`的配置和实现可能在其中。 5. `src` - 源代码目录,可能包含了使用`log4j`和`FileWatchdog`的Java代码。 6. `lib` - 库文件目录,很可能包含了`log4j`库...
1. **使用inotify监控文件变化**:在主服务器上安装inotify工具,并编写脚本来监控指定目录下的文件变化。一旦检测到文件变化,即触发rsync命令进行同步。 2. **定期同步**:除了实时同步之外,还可以设置定时任务...
此外,Zookeeper的日志系统(如使用Log4j)也便于问题排查和调试。 最后,关于容灾处理,Zookeeper通过复制和心跳检测机制确保数据的一致性和可用性。当节点故障时,选举算法会快速选出新的领导者,保证服务的连续...
然后,你需要在服务器端实现这个接口,从日志文件或者日志框架(如Log4j、SLF4J)中读取并返回最新的日志条目。 在JSP页面上,我们需要创建一个HTML元素(如预格式化文本`<pre>`标签)来展示日志,并使用JavaScript...
开发者需要选择合适的日志框架,如Log4j或SLF4J,并配置其日志级别,以便在需要时收集详细信息。 5. **源代码结构** 源代码通常包括前端JSP文件、后台Java类(如Servlet、Bean)、数据库连接和查询语句、配置文件...
- 通过集成如Log4j或SLF4J进行日志记录,便于调试和问题定位。 - 使用Prometheus或Grafana进行性能监控,实时展示系统的运行状态。 7. **测试**: - 源码中可能包含了大量的单元测试和集成测试,确保各个模块的...
**Logback**是一款开源的日志框架,它作为Log4j的一个升级版本出现,由Log4j的创始人Ceki Gülcü开发。Logback的目标是提供一个灵活、强大且易于使用的日志解决方案,其主要特点包括高性能、易配置以及丰富的功能集...
3. **log4j.properties**:日志配置文件,用于控制Zookeeper的日志输出级别和格式。 **四、使用与部署** 解压`zookeeper-3.4.8.rar`后,用户可以直接修改`zoo.cfg`配置文件,设置适合自己的参数。例如,调整数据...
通过对BlueLeech项目的深入研究和实践,开发者不仅可以掌握Java爬虫的基本原理和技术,还能了解到如何设计和实现一个高效、可扩展的网络爬虫系统。这将为未来的数据分析、信息挖掘等工作打下坚实的基础。
1. **日志文件分析工具**:用于分析日志文件中的异常信息,如Log4j、ELK Stack等。 2. **调试器**:例如GDB、Visual Studio Debugger等,可用于单步调试、设置断点等操作。 3. **性能分析工具**:如Valgrind、Perf等...
5. **日志记录**:推荐使用log4j或其他日志框架来记录Hibernate的运行信息。 6. **命名策略实现**:说明如何自定义命名策略,以满足特定的命名规范。 7. **XML配置文件**:解析Hibernate配置文件的结构和元素含义。 ...
同时,由于Zookeeper默认使用SLF4J日志框架,为了兼容其他日志实现,如Log4j2,可能需要排除默认的SLF4J绑定,并添加相应的Log4j2依赖: ```xml <!-- Logger (log4j2) --> <groupId>org.apache.logging.log4j ...
部署CAS后,可以利用日志系统(如Log4j)进行故障排查,通过监控工具(如JMX)监控CAS服务器的运行状态,确保服务的稳定性和性能。 9. **社区支持** CAS作为开源项目,拥有活跃的社区和丰富的文档资源。开发者...
4. **配置文件修改**:Zookeeper的主要配置文件位于`conf`目录下,主要包括`zoo.cfg`(默认为`zoo_sample.cfg`)和`log4j.properties`。首先,将`zoo_sample.cfg`重命名为`zoo.cfg`,然后编辑该文件以适应伪分布式...
要解析这些CSV文件,我们需要使用能处理CAN数据的工具,如CANoe、CANalyzer或者开源软件CANlog解析器等。通过这些工具,我们可以将原始的二进制数据转换为可读格式,并进行深度分析。例如,可以分析发动机的燃油效率...
10. **日志管理**:如Log4j、SLF4J,用于记录和调试程序运行中的信息。 通过研究这些示例,开发者不仅可以掌握如何在Java环境中实现CDC,还可以提升对Java并发编程、数据库交互、消息队列和测试策略等多方面的能力...