`

扩展log4j,通过配置实现将业务日志记录到数据库中

    博客分类:
  • java
阅读更多
扩展:
1. 扩展JDBCAppender
   在append方法中仅对扩展的日志对象做处理
2. 扩展PatternLayout
   支持JSTL的ExpressionEvaluator
3. 扩展Filter
   支持按class name做过滤

使用步骤:
1. 在log4j.xml中定义Appender
<appender name="jdbcChannelLog"
		class="com.xxx.wap.log.JDBCAppender">
		<param name="driver" value="com.mysql.jdbc.Driver" />
		<param name="URL" value="jdbc:mysql://localhost:3306/test" />
		<param name="user" value="admin" />
                  <param name="password" value="123" />
		<param name="bufferSize" value="1" />
		<layout class="com.xxx.wap.log.PatternLayout">
			<param name="ConversionPattern"
				value="insert into xx_channel_log(chanid,subid,request_timemillis,request_url,request_ip,session_id,service_id,path_id,resource_id,resource_file_id,type,misc_mid,misc_session_id,misc_service_id) values (''{chanid}'',''{subid}'',''{requestTimeMillis,date,yyyy-MM-dd HH:mm:ss}'',''{requestUrl}'',''{fromIp}'',''{sessionId}'',{serviceId,number,00000000},{pathId,number,00000000},{resourceId,number,00000000},{resourceFileId,number,00000000},{type},''{mid}'',''{miscSessionId}'',''{miscServiceId}'')" />
		</layout>
		<filter class="com.xxx.wap.log.LogObjectFilter">
			<param name="className" value="com.xxx.wap.log.item.EtChannelLog"/>		</filter>
	</appender>

2. 在log4j.xml中将定义的Appender添加到root里
<root>
		<priority value="warn" />
		<appender-ref ref="stdout" />
		<!--<appender-ref ref="file"/>-->
		<appender-ref ref="jdbcChannelLog" />
	</root>

3. 在相应的位置调用logger的方法(info,error等等)
EtChannelLog channelLog = new EtChannelLog();
		channelLog.setType(type);
		channelLog.setChanid(chanId);
		channelLog.setFromIp(request.getRemoteAddr());
		String subid = request.getParameter("subid");
		if (subid != null && subid.trim().length() > 0
				&& (!subid.trim().equalsIgnoreCase("null")))
			channelLog.setSubid(request.getParameter("subid"));
		channelLog.setRequestTimeMillis(System.currentTimeMillis());
		channelLog.setSessionId((request.getSession() == null) ? null : request
				.getSession().getId());
		String msisdn = HandsetUtil.getUserMobileNum(request);
		String mid = HandsetUtil.getUserMobileMid(request);
		channelLog.setMid(mid);
		channelLog.setMsisdn(msisdn);
		channelLog.setPathId(pathID);
		channelLog.setServiceId(serviceID);
		channelLog.setResourceId(resourceId);
		channelLog.setResourceFileId(resourceFileID);
		// ��url
		String url = request.getRequestURL().toString();
		if (request.getQueryString() != null)
			url += "?" + request.getQueryString();
		channelLog.setRequestUrl(url);
		channelLog.setMid(HandsetUtil.getUserMobileMid(request));
		channelLog.setMiscSessionId(request.getParameter("MISC_SessionID"));
		channelLog.setMiscServiceId(request.getParameter("MISC_ServiceID"));
		log.info(channelLog);
分享到:
评论
2 楼 hhww0101 2010-11-20  
能否说的详细些?
1 楼 czllfy 2009-11-09  
你好:
     我在做LOG日志,也遇到LOG4J扩展问题,我想问一下,能否提供部分源码参考,尤其是扩展PatternLayout支持JSTL的ExpressionEvaluator这块内容

相关推荐

    log4j实用配置扩展

    log4j的主要优势在于其灵活性和可扩展性,允许用户通过配置文件自定义日志记录的方式,无需修改应用程序代码。 #### 二、日志记录的目的 在应用程序中记录日志主要有以下三个目的: 1. **监视代码中变量的变化...

    Log4j 日志信息存储到数据库中

    通过上述配置和使用步骤,我们可以有效地将 Log4j 日志信息存储到 MySQL 数据库中。这种方式不仅方便了日志的集中管理和分析,还提高了系统的可维护性和可扩展性。对于大型分布式系统来说,将日志信息存储到数据库是...

    C# 利用log4net 把日志写入到数据库

    在本篇内容中,我们将深入探讨如何利用开源日志框架log4net将应用程序的日志信息记录到数据库中。 **一、log4net简介** log4net是一款广泛使用的、高度可配置的日志框架,它为.NET开发者提供了一套灵活的日志记录...

    log4j日志写入数据库实例

    在“log4j日志写入数据库实例”中,我们将关注如何配置Log4j将日志信息存储到数据库中,以便于后期分析和检索。 要实现这个功能,我们需要创建一个Appender,该Appender能够与数据库进行交互。通常,我们会使用...

    log4net保存日志到MySql数据库

    通过log4net,我们可以将应用程序的日志信息记录到MySQL的特定表中,便于管理和检索。 ### 3. 配置log4net连接MySQL 在使用log4net将日志写入MySQL之前,需要配置log4net的`AdoNetAppender`。首先,确保安装了`...

    log4j配置和加载方法

    在`.properties`文件中,配置信息通过键值对的形式呈现,如示例中的`log4j.category.org.zblog=ERROR,A1`,这里指定了`org.zblog`这个logger的日志级别为`ERROR`,并关联到名为`A1`的appender。 2. **.xml格式**:...

    log4net应用demo_记录系统日志信息(支持6种数据库)

    开发者可以自定义日志级别,选择不同的输出目的地,如控制台、文件、数据库等,还可以通过配置文件方便地调整日志策略。 2. **日志级别**:Log4net支持多种日志级别,包括DEBUG、INFO、WARN、ERROR、FATAL,允许...

    log4j.jar包,和log4j.properties配置文件下载

    在实际应用中,将`log4j.jar`添加到项目的类路径中,并根据项目需求定制`log4j.properties`,即可实现有效的日志管理。这不仅有助于问题排查,也有利于系统维护和性能优化,因为过多的日志可能会占用大量磁盘空间,...

    logging-log4j日志记录

    1. **灵活性**:`log4j`允许开发者通过配置文件来控制日志信息的输出级别,如DEBUG、INFO、WARN、ERROR和FATAL。 2. **可扩展性**:支持自定义日志布局、输出目的地(如控制台、文件、数据库等)和自定义日志过滤器...

    log4j记录压缩日记

    综上所述,"log4j记录压缩日记"主要涉及的是使用Log4j进行日志记录,并利用特定的Appender实现日志文件的滚动和压缩,以优化日志存储和管理。在实际的开发和运维工作中,理解并正确配置Log4j的这些特性对于监控系统...

    log4j使用jar包和log4j.properties配置文件

    `log4j.properties`是Log4j的配置文件,通过它我们可以定制日志的级别、输出方式、格式等。一个基本的`log4j.properties`配置示例如下: ```properties # 设置全局日志级别 log4j.rootLogger=DEBUG, stdout, R # ...

    log4j使用笔记

    - `org.apache.log4j.jdbc.JDBCAppender`:通过 JDBC 将日志记录到数据库。 4. **Layout 类型**: - `org.apache.log4j.PatternLayout`:自定义输出格式。 - `org.apache.log4j.HTMLLayout`:HTML 输出格式。 -...

    log4net配置,日志纪录log4j的.NET版

    以上配置创建了一个将日志输出到控制台的Appender,并设置日志级别为DEBUG,意味着所有DEBUG及以上的日志信息都将被记录。 **3. 使用log4net** 在代码中,首先需要初始化log4net配置,这通常在应用程序启动时完成。...

    kafka_Java_Log4j

    通过配置,你可以选择不同的日志级别(如DEBUG、INFO、WARN、ERROR等),并将日志输出到控制台、文件、SMTP服务器甚至数据库。Log4j还支持自定义Appender,这是关键所在,因为我们可以创建一个Appender来将日志发送...

    日志版本-log4j2版本jar

    在使用Log4j2时,需要注意的是,由于部分jar包默认的日志系统可能是Log4j,因此,在集成到像Tomcat这样的Java应用服务器或者是JDK环境中时,可能需要设置默认的日志为Log4j2。这通常通过修改服务器或JDK的启动脚本,...

    log4j示例项目

    这个“log4j示例项目”旨在帮助开发者理解和使用Log4j,通过该项目,我们可以深入学习Log4j的配置、使用方法以及其在实际开发中的应用。 **1. Log4j的组成部分** Log4j主要包括三个核心组件:Logger(日志器)、...

    日志 log4j

    2. **可扩展性**:通过插件机制,Log4j可以轻松添加新的日志输出器,如SMTP Appender(邮件通知)、JMS Appender(消息队列)等。 3. **性能高效**:设计时考虑了性能问题,使得在不影响程序运行效率的前提下,能够...

    log4net写入sql server数据库实例

    标题"log4net写入sql server数据库实例"指出,这是一个关于如何使用log4net库在基于MVC(Model-View-Controller)框架的应用程序中记录日志,并将这些日志信息存储到SQL Server数据库的示例教程。 描述中提到,这个...

    .net log4jdemo log4j日志

    本文将详细介绍如何在.NET项目中使用Log4jDemo,以实现高效、灵活的日志管理。 首先,Log4j是一个开源的日志记录库,由Apache软件基金会开发。它的设计理念是提供一个可配置、可扩展的日志框架,允许开发者根据需要...

    Java 日志记录 log4j 最简明教程

    此外,log4j还支持过滤、异步日志、自定义Appender和Layout等功能,可以根据实际需求进行配置和扩展。例如,你可以创建一个文件Appender,将日志写入文件,或者设置Filter来控制哪些日志消息会被记录。 总的来说,...

Global site tag (gtag.js) - Google Analytics