log4j记录日志到数据库中

来源:互联网 发布:php抓取手机号码 编辑:程序博客网 时间:2024/04/30 09:14

 struts1.3+spring2.5+hiberanate3.2

1 搭建一个ssh的web工程

 

2 在src下加入log4j.properties
#这一步很重要,在com.sSHLog4jDB.struts.action包下可以把日志记录到DB中,
#如果没有指定,则不可以插入到数据库中
log4j.logger.com.sSHLog4jDB.struts.action=INFO,db,logfile

log4j.rootCategory=INFO, stdout,logfile

####com.neam.struts.action为用户自定的包,表示在这个包下的操作可以记录到数据库中
log4j.logger.com.neam.struts.action=INFO,db

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n

log4j.appender.logfile=org.apache.log4j.RollingFileAppender
#####日志也输出到下面的路径下SSHLog4jDB为你的工程名
log4j.appender.logfile.File=../webapps/SSHLog4jDB/test.log
log4j.appender.logfile.MaxFileSize=500KB
log4j.appender.logfile.MaxBackupIndex=10
log4j.appender.logfile.DatePattern=.yyyy-MM-dd
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - <%m>%n

########################

# JDBC Appender

#######################


#log4j.logger.business=INFO,db
log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender
#log4j.appender.db=com.neam.commons.MyJDBCAppender
#log4j.appender.db=JDBCExtAppender

#log4j.appender.db.BufferSize=1

#log4j.appender.db.sqlname=log

log4j.appender.db.driver=net.sourceforge.jtds.jdbc.Driver
                     
log4j.appender.db.URL=jdbc:jtds:SqlServer://localhost:1433;DatabaseName=feb

log4j.appender.db.user=sa

log4j.appender.db.password=febpay86837511

log4j.appender.db.sql=insert into WDZLOG  values ('%X{userId}','%X{userName}','%C','%M','%d{yyyy-MM-dd HH:mm:ss}','%p','%m')

log4j.appender.db.layout=org.apache.log4j.PatternLayout

 


3 按照log4j.properties中连接的内容,在相应的数据库中建表
 语句在user.sql、WDZLOG.sql中

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_user]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[t_user]
GO

CREATE TABLE [dbo].[t_user] (
 [uid] [int] IDENTITY (1, 1) NOT NULL ,
 [name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [pwd] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [note] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

 

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[WDZLOG]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[WDZLOG]
GO

CREATE TABLE [dbo].[WDZLOG] (
 [WDZLOGID] [int] IDENTITY (1, 1) NOT NULL ,
 [LogName] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
 [UserName] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
 [Class] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
 [Mothod] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
 [CreateTime] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
 [LogLevel] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
 [MSG] [varchar] (555) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

 

4 在要用到的类中,要记录入数据库的
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

  private Log logger = LogFactory.getLog(this.getClass());

logger.info("数据库插入成功");

logger.info(userName+"用户登陆成功");