本文链接地址:http://www.ibm.com/developerworks/cn/web/wa-lo-usertrack/index.html#Log4JConfig
更多:http://www.ibm.com/developerworks/cn/web/
随着 Web 应用的复杂化,网站用户的操作过程也日益复杂,网站功能的多样化和交互性的提高为用户提供了多种可能的浏览路径。为了改进用户的使用体验,有时也是为了模拟用户的操作过程以帮助用户解决使用中的问题,需要能在日志中识别某个用户在整个 Session 中所经历的操作过程,本文针对基于 Apache Log4J 的 Web 应用,讨论如何利用 NDC 和 MDC 的机制,简单快捷的为 Web 应用日志增加用户跟踪的基础数据。通过本文,读者可以学习到关于 NDC 和 MDC 的工作机制,以及如何利用他们在一个 Web 应用中记录用户在一个网站上的全部行为和操作过程,并可以直接使用文中的代码和思路,提高工作效率。进行用户跟踪的重要性随着 Web 应用的复杂化,用户在网站上的操作过程日益复杂。网站功能的多样化和交互性的提高为用户提供了多种可能的浏览路径。对于一个复杂的站点,用户在网站上操作的行为模式和操作习惯的分析,会给网站的优化提供基础的数据支持。而从技术上要为这种分析提供支持,就需要记录下每个用户在网站上的操作过程。另一方面,这种数据的记录也有助于解决用户在使用中出现的问题。我们只要知道用户遇到问题的时间和一些基本信息,就可以从日志中查出此用户遇到问题时的操作过程,从而有助于再现用户的出错场景,进而帮助用户解决问题。此外,网站用户的安全审计和分析用户特征的数据挖掘等工作也需要提供一个方法能对用户的网站操作进行跟踪和纪录。通常 Web 应用的开发者会在开发过程中设置很多的跟踪点,在这些跟踪点向日志系统输出一些应用程序运行的信息,如果这些信息足够全面的话,开发者就可以利用他们猜测出程序如何处理的用户请求,以及可能遇到了什么问题。但不幸的是,如果一个站点在设计阶段没有把用户跟踪作为系统必须解决的一个问题提出的话,这些日志很可能就只是开发者为满足系统调试的需要而设置的一些信息。当用户访问量急剧增加的的时候,就会出现下面的问题。在一个高访问量的 Web 应用中,经常要在同一时刻处理大量的用户请求。Web 服务器会为每一个请求分配一个线程,每一个线程都会向日志系统输入一些信息,通常日志系统都是按照时间顺序而不是用户顺序排列这些信息的,这些线程的交替运行会让所有用户的处理信息交错在一起,让人很难分辨出那些记录是同一个用户产生的。另外,高可用性的网站经常会使用负载均衡系统平衡网络流量,这样一个用户的操作记录很可能会分布在多个 Web 服务器上,如果我们没有一种方法来标示一条记录是哪个用户产生的,从这众多的日志信息中筛选出对我们有用的东西将是一项艰巨的工作。本文试图探讨的解决方案是建立在 Log4J 的基础上的,如果你的 Web 站点已经使用了 Log4J 作为日志系统的 API 接口,根据本文所介绍的方法,就可以很容易的在每一条日志上保存用户上下文信息,为用户跟踪保存基本的访问数据。为了更清晰地介绍这种方法,我们先对 Log4J 以及 NDC/MDC 做个简单的介绍。
Log4J 是 Apache 组织提供的一个日志组件, 它设计了灵活的配置文件,利用它可以在不更改程序的情况下,通过修改配置文件来调控日志的输出。下面是 Log4J 最主要的三大基本构件:
- 记录器(Loger)
对日志信息进行分类筛选。通过指定优先级,控制程序中日志信息的输出:高于优先级的日志可以被输出,低于优先级的日志则被忽略。
- 输出源(Appenders)
指定日志信息的输出设备。Log4J 目前支持的输出设备有以下几种:
- org.apache.log4j.ConsoleAppender(控制台)
- org.apache.log4j.FileAppender(文件)
- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
- org.apache.log4j.SocketAppender (Socket)
- org.apache.log4j.NtEventLogAppender (NT的Event Log)
- org.apache.log4j.JMSAppender (电子邮件)
程序员也可以根据自己的需要定制 Appenders,实现更复杂和更为方便实用的日志管理,比如把日志输入数据库,或者传输到统一的日志服务器,等等。
- 布局(Layouts)
指定日志输出的格式。Log4J 提供的 Layout 有以下几种:
- org.apache.log4j.HTMLLayout(以 HTML 表格形式布局)
- org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
- org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
- org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
软件开发人员可以通过这三大构件,根据日志的类型和优先级进行记录,并且可以在程序运行时去控制日志信息输出的格式和往什么地方输出(控制台、日志文件)。
分享到:
相关推荐
在多线程的Web应用环境中,追踪用户操作变得尤为重要,尤其是在需要分析用户行为、解决用户问题或进行安全审计时。本文将详细介绍如何利用Log4j的Nested Diagnostic Context (NDC) 和Mapped Diagnostic Context (MDC...
在MyEclipse中开发Java Web应用是一门涉及多个技术领域的重要实践。MyEclipse作为一款强大的集成开发环境(IDE),特别适合于Java Web应用程序的构建。以下将详细讲解配置JDK、Tomcat以及使用SVN的基本步骤和相关...
在.NET框架下,C#是一...总的来说,这个案例为我们提供了一个学习和实践C#在.NET环境中开发Web应用的宝贵资源,通过深入研究B2CShop项目,我们可以了解如何将三层架构应用于实际项目,并掌握C#在Web开发中的核心应用。
### 关于Web回话跟踪与Session机制 #### Session机制概览 ...综上所述,通过合理的使用Cookie和URL重写技术,结合适当的编程手段,开发者可以有效地实现Web应用程序中的Session跟踪,从而为用户提供更佳的用户体验。
《Flask Web开发:基于Python的Web应用开发实战》是一本深入浅出的教程,旨在帮助读者掌握使用Python的Flask框架构建Web应用程序的技术。Flask是一个轻量级的Web服务器网关接口(WSGI)Web应用框架,以其灵活性、...
在Web应用中,会话是指用户打开浏览器与服务器进行交互的一系列连续操作。为了识别这些操作属于同一个用户,服务器需要一种方式来跟踪用户,这就是会话跟踪。在HTTP协议本身是无状态的,因此不能自动维持会话信息,...
1. **新建Web用户控件**:在项目中添加一个新项,选择“Web用户控件”模板。 2. **设计工具栏**:在Web用户控件中使用HTML和CSS设计工具栏,可以包含静态HTML代码以及必要的CSS样式。 3. **重用工具栏**:在需要使用...
在IT行业中,Servlet技术是Java Web开发中的核心组件,它用于扩展服务器的功能,尤其是在构建动态网站和Web应用程序方面。在这个“一个servlet的web应用”项目中,我们看到使用Servlet和JSP(JavaServer Pages)来...
在进行Web应用测试时,测试团队应采用全面的方法,包括功能测试、性能测试、安全性测试、兼容性测试和用户体验测试等多个维度,以确保应用的质量和可靠性。同时,持续集成和自动化测试工具的应用可以帮助提高测试...
当我们在Web应用上下文中谈论扩展点时,它可能指的是如何通过定义特定接口或API来增加应用的功能,使得其他开发者能够根据需要轻松地集成或扩展应用。这有助于创建灵活、可维护且可扩展的Web应用。 其次,...
* 登录用图片验证码:为了防止自动程序攻击,需要在登录页面添加图片验证码,以确保登录请求来自真实用户。 * 口令传输:为了保护用户口令安全,需要使用加密协议传输口令,例如 HTTPS。 * 保存登录功能:为了提高...
会话跟踪技术是Web应用程序中不可或缺的一部分,它主要用于在用户浏览多页时保持其状态,以便提供个性化的用户体验和服务。传统的会话跟踪技术主要包括Cookie、URL重写和隐藏表单字段。 Cookie技术是最常见的会话...
在JAVA Web开发中,实现在线用户统计是一项关键功能,它能够帮助网站或应用程序的管理员实时了解当前有多少用户正在访问和使用系统。这个“JAVA Web在线用户统计”解决方案显然是强大、好用且简单的,这意味着它可能...
在开发网络应用时,用户登录功能是至关重要的一个部分,它确保了用户的个人数据安全以及对特定资源的访问权限。本实验旨在通过实践操作来学习如何利用Session技术来实现这一功能。Session是一种服务器端存储用户状态...
查找与编辑权限相关的代码,比如在`permissions.php`或`user_group.php`,修改或添加规则,使得普通用户无法访问排版编辑功能。 4. **修改视图**:在视图文件中,找到展示编辑按钮或链接的部分,并将其隐藏或移除。...
7. **用户输入验证**:确保用户在表单中输入的数据符合预期格式和规则,防止恶意输入和数据错误,是Web应用安全的重要一环。 8. **用户控件**:自定义的可重用UI组件,可以提高代码复用性和页面设计效率。 9. **...
3. Web Service控件:PB11包含Web Service控件,可以直接在窗口中添加,调用Web Service函数就像调用本地函数一样简单。 三、创建Web Service 在PB11中创建Web Service的步骤包括: 1. 定义服务接口:使用PB11的...
使用Xpra在Web浏览器中传输远程Dwarf Fortress" 的描述进一步强调了这个项目的核心功能,即利用Xpra技术,用户可以在任何支持Web浏览器的地方,无论何处,都能通过Web界面体验Dwarf Fortress游戏,这大大增加了游戏...
在商业编程领域,Web 应用程序的版本检查与声音效果的添加是两个重要的功能,它们可以提升用户体验并确保软件的稳定性和安全性。下面将详细解释这两个知识点。 首先,我们来探讨 Web 版本检查。在开发 Web 应用程序...