选择显示字体大小

log4j原类进行扩展

       log4j写数据库,如果用hiberate,struts等,会写入很多没用的信息,而且通常只能写入五个字段,对用户来说没什么意义,如果用来记录用户登录,操作等的记录,一个message字段是不够的.

       这里,我在log4j里加了两个字段user ,type(当然你可以再加几个)用来记录用户登录,操作.下面是扩展类.

import org.apache.log4j.jdbc.jdbcappender;
import java.sql.sqlexception;
import java.util.iterator;

import org.apache.log4j.logger;
import org.apache.log4j.spi.errorcode;
import org.apache.log4j.spi.loggingevent;

public class extendslog4j extends jdbcappender {
public string formatsql(string s)
        {
        
                int i = 0,j=0,k=0;
                string s1="",s2="",s3="",s4="",s5="",s6="",s7="";

//                获取类型这个值
                if (s.indexof(&quot;type=&quot;)<0   s.indexof(&quot;xml&quot;)>0)  
                {
                        return &quot;&quot;;
                }
                try{
                        
//                        取出message
                        
                        i = s.indexof(&quot;)&quot;);
                        j = s.indexof(&quot;(&quot;,i);
                        s1 =s.substring(0,j+1);
                        k = s.indexof(&quot;,&quot;,j);
                        s5 = s.substring(j+3,k-1);  //s5存放message  
                        s7=s5.replaceall(&quot;'&quot;,&quot;&quot;);
                

                        j = s7.indexof(&quot;type=&quot;);
                        if (j<0)
                                return s;
                        k =  s7.indexof(&quot; &quot;);
                        s3 = s7.substring(j+5,k);   //s3存放type
                        
                        //type一定要的,user有可能为空
                        
                        j = s7.indexof(&quot;user=&quot;);
                        if ( j>0 )
                        {
                                k = s7.indexof(&quot; &quot;,j);
                                s4 = s7.substring(j+5,k);  //s4存放user
                                s6 = s7.substring(k,s5.length()); //s6存放message
                        }
                        else
                        {
                                s4=&quot;&quot;;
                                s6 = s7.substring(k,s5.length());
                        }
                        s = s.replacefirst(s5,s3);
                        s = s.replacefirst(s5,s4);
                        s = s.replacefirst(s5,s6);
                }
                catch(exception e )
                {
                        return &quot;&quot;;
                }
                return s;
        }
        
        
        public void flushbuffer() {
                
        
                //do the actual logging
                removes.ensurecapacity(buffer.size());
                for (iterator i = buffer.iterator(); i.hasnext();) {
                        try {
                                loggingevent logevent = (loggingevent)i.next();
                                
                                string sql = getlogstatement(logevent);
                                
                                sql = formatsql(sql);
                                
                                if (!sql.equals(&quot;&quot;))  
                                {
                                        execute(sql);
                                }
                                removes.add(logevent);  
                        }
                        catch (sqlexception e) {  
                                errorhandler.error(&quot;failed to excute sql&quot;, e,
                                                errorcode.flush_failure);  
                        }
                }
                
                // remove from the buffer any events that were reported
                buffer.removeall(removes);
                
                // clear the buffer of reported events
                removes.clear();
        }
        
        public static void main(string&#91;&#93; args) {
                // todo auto-generated method stub
                extendslog4j extendslog4j = new extendslog4j();
                
                logger logger = logger.getlogger(&quot;this.getmessage()&quot;);
                logger.info(&quot;uuuuuuuuuuuuuuuuu&quot;);  //不会插入数据库
                     logger.info(&quot;type=sfdf user=pp jjjjjjjjjjjjjjjjj&quot;); //写入数据库 ,users可以不写.

        }
        
}


log4j文件

log4j.rootlogger=info, a1,a2

# a1 is set to be a consoleappender which outputs to system.out.
log4j.appender.a1=org.apache.log4j.consoleappender

# a1 uses patternlayout.
log4j.appender.a1.layout=org.apache.log4j.patternlayout

# the conversion pattern uses format specifiers. you might want to
# change the pattern an watch the output format change.
log4j.appender.a1.layout.conversionpattern=%-4r %-5p &#91;%t&#93; %37c %3x - %m%n
#11? ??a2??????
log4j.appender.a2 = extendslog4j
log4j.appender.a2.buffersize = 1
log4j.appender.a2.driver = oracle.jdbc.driver.oracledriver
log4j.appender.a2.url = jdbc:oracle:thin:@192.68.69.61:1521:www
log4j.appender.a2.user = qyhl
log4j.appender.a2.password = qyhl
log4j.appender.a2.layout = org.apache.log4j.patternlayout
log4j.appender.a2.layout.conversionpattern = insert into log4j (type,username,createdate, thread, priority, category, message) values( '%m','%m',sysdate, '%t', '%-5p', '%c', '%m')


现在写数据库,继承的是extendslog4j类,不是jdbc的那个接口了.要加几个字段,可以根据自己需要再扩展


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons