Log4j.properties configuration file:
Log4j.rootlogger=info,db# supports Jndi data sources using log4j extensions log4j.appender.db=Com.qdgswx.log4j.ds.JndiDSAppenderlog4j.appender.db.jndiName=wstjndilog4j.appender.db.BufferSize=1Log4j.appender.db.sql=insert into Wx_log (openid,nsrsbh,logtype,classname,methodname,oprtime,loglevel,content) VALUES ('%x{openid}','%X{NSRSBH}','%x{logtype}','%c','%M','%d{yyyy-mm-dd HH:mm:ss}','%p','%m') Log4j.appender.db.layout=org.apache.log4j.patternlayout
Extended Class Jndidsappender.java
Public classJndidsappenderextendsJdbcappender {protectedDataSource ds =NULL; protectedString Jndiname; Public voidsetjndiname (String jndiname) { This. Jndiname =Jndiname; } protected synchronized voidinit () {if(ds! =NULL) { return; } Try{InitialContext Context=NewInitialContext (); DS=(DataSource) context.lookup (jndiname); } Catch(namingexception e) { This. Errorhandler.error (E.getmessage ()); }} @OverrideprotectedConnection getconnection ()throwsSQLException { while(ds==NULL) {init (); } Connection Conn=ds.getconnection (); Conn.setautocommit (true); returnConn; } @Overrideprotected voidCloseConnection (Connection conn) {Try { if(conn!=NULL&&!conn.isclosed ()) {Conn.close (); } } Catch(SQLException e) { This. Errorhandler.error (E.getmessage ()); } } }
Extended log4j supports Jndi data sources