扩展:
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);
分享到:
相关推荐
log4j的主要优势在于其灵活性和可扩展性,允许用户通过配置文件自定义日志记录的方式,无需修改应用程序代码。 #### 二、日志记录的目的 在应用程序中记录日志主要有以下三个目的: 1. **监视代码中变量的变化...
通过上述配置和使用步骤,我们可以有效地将 Log4j 日志信息存储到 MySQL 数据库中。这种方式不仅方便了日志的集中管理和分析,还提高了系统的可维护性和可扩展性。对于大型分布式系统来说,将日志信息存储到数据库是...
在本篇内容中,我们将深入探讨如何利用开源日志框架log4net将应用程序的日志信息记录到数据库中。 **一、log4net简介** log4net是一款广泛使用的、高度可配置的日志框架,它为.NET开发者提供了一套灵活的日志记录...
在“log4j日志写入数据库实例”中,我们将关注如何配置Log4j将日志信息存储到数据库中,以便于后期分析和检索。 要实现这个功能,我们需要创建一个Appender,该Appender能够与数据库进行交互。通常,我们会使用...
通过log4net,我们可以将应用程序的日志信息记录到MySQL的特定表中,便于管理和检索。 ### 3. 配置log4net连接MySQL 在使用log4net将日志写入MySQL之前,需要配置log4net的`AdoNetAppender`。首先,确保安装了`...
在`.properties`文件中,配置信息通过键值对的形式呈现,如示例中的`log4j.category.org.zblog=ERROR,A1`,这里指定了`org.zblog`这个logger的日志级别为`ERROR`,并关联到名为`A1`的appender。 2. **.xml格式**:...
开发者可以自定义日志级别,选择不同的输出目的地,如控制台、文件、数据库等,还可以通过配置文件方便地调整日志策略。 2. **日志级别**:Log4net支持多种日志级别,包括DEBUG、INFO、WARN、ERROR、FATAL,允许...
在实际应用中,将`log4j.jar`添加到项目的类路径中,并根据项目需求定制`log4j.properties`,即可实现有效的日志管理。这不仅有助于问题排查,也有利于系统维护和性能优化,因为过多的日志可能会占用大量磁盘空间,...
1. **灵活性**:`log4j`允许开发者通过配置文件来控制日志信息的输出级别,如DEBUG、INFO、WARN、ERROR和FATAL。 2. **可扩展性**:支持自定义日志布局、输出目的地(如控制台、文件、数据库等)和自定义日志过滤器...
综上所述,"log4j记录压缩日记"主要涉及的是使用Log4j进行日志记录,并利用特定的Appender实现日志文件的滚动和压缩,以优化日志存储和管理。在实际的开发和运维工作中,理解并正确配置Log4j的这些特性对于监控系统...
`log4j.properties`是Log4j的配置文件,通过它我们可以定制日志的级别、输出方式、格式等。一个基本的`log4j.properties`配置示例如下: ```properties # 设置全局日志级别 log4j.rootLogger=DEBUG, stdout, R # ...
- `org.apache.log4j.jdbc.JDBCAppender`:通过 JDBC 将日志记录到数据库。 4. **Layout 类型**: - `org.apache.log4j.PatternLayout`:自定义输出格式。 - `org.apache.log4j.HTMLLayout`:HTML 输出格式。 -...
以上配置创建了一个将日志输出到控制台的Appender,并设置日志级别为DEBUG,意味着所有DEBUG及以上的日志信息都将被记录。 **3. 使用log4net** 在代码中,首先需要初始化log4net配置,这通常在应用程序启动时完成。...
通过配置,你可以选择不同的日志级别(如DEBUG、INFO、WARN、ERROR等),并将日志输出到控制台、文件、SMTP服务器甚至数据库。Log4j还支持自定义Appender,这是关键所在,因为我们可以创建一个Appender来将日志发送...
在使用Log4j2时,需要注意的是,由于部分jar包默认的日志系统可能是Log4j,因此,在集成到像Tomcat这样的Java应用服务器或者是JDK环境中时,可能需要设置默认的日志为Log4j2。这通常通过修改服务器或JDK的启动脚本,...
这个“log4j示例项目”旨在帮助开发者理解和使用Log4j,通过该项目,我们可以深入学习Log4j的配置、使用方法以及其在实际开发中的应用。 **1. Log4j的组成部分** Log4j主要包括三个核心组件:Logger(日志器)、...
2. **可扩展性**:通过插件机制,Log4j可以轻松添加新的日志输出器,如SMTP Appender(邮件通知)、JMS Appender(消息队列)等。 3. **性能高效**:设计时考虑了性能问题,使得在不影响程序运行效率的前提下,能够...
标题"log4net写入sql server数据库实例"指出,这是一个关于如何使用log4net库在基于MVC(Model-View-Controller)框架的应用程序中记录日志,并将这些日志信息存储到SQL Server数据库的示例教程。 描述中提到,这个...
本文将详细介绍如何在.NET项目中使用Log4jDemo,以实现高效、灵活的日志管理。 首先,Log4j是一个开源的日志记录库,由Apache软件基金会开发。它的设计理念是提供一个可配置、可扩展的日志框架,允许开发者根据需要...
此外,log4j还支持过滤、异步日志、自定义Appender和Layout等功能,可以根据实际需求进行配置和扩展。例如,你可以创建一个文件Appender,将日志写入文件,或者设置Filter来控制哪些日志消息会被记录。 总的来说,...