1、建立用于保存日志的数据库表:
CREATE TABLE `sys_log` (`id` int(11) NOT NULL AUTO_INCREMENT,
`level` varchar(32) NOT NULL,
`logger` varchar(100) NOT NULL,
`message` varchar(1000) DEFAULT NULL,
`exception` varchar(10000) DEFAULT NULL,
`date_add` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4
2、配置 databaseAppender :
<JDBC name="databaseAppender" tableName="sys_log"><ConnectionFactory class="cc.s2m.web.s2mBlog.util.StaticProp" method="getDatabaseConnection" />
<Column name="date_add" isEventTimestamp="true" />
<Column name="level" pattern="%level" />
<Column name="logger" pattern="%logger" />
<Column name="message" pattern="%message" />
<Column name="exception" pattern="%ex{full}" />
</JDBC>
3、其中 cc.s2m.web.s2mBlog.util.StaticProp 类的getDatabaseConnection方法为获取可用的datasource:
DriverManagerDataSource ds = new DriverManagerDataSource()ds.setDriverClassName("com.mysql.jdbc.Driver")
ds.setUrl("jdbc:mysql://127.0.0.1/s2mBlog?characterEncoding=utf8")
ds.setUsername("root")
ds.setPassword("123456")
return ds.getConnection()
4、指派需要记录的日志,使用 databaseAppender 即可:
<logger name="SYSLOG" level="INFO" additivity="false"><appender-ref ref="databaseAppender"/>
</logger>
viewplainprint?CREATE02TABLE02log02(02020202[Id]02[int]02IDENTITY02(1,021)02primary02key02NOT02NULL02,02020202[Lg_Date]02[datetime]02NOT02NULL02,02020202[Lg_Thread]02[varchar]02(50)02COLLATE02Chinese_PRC_CI_AS02NOT02NULL02,02020202[Lg_Level]02[varchar]02(20)02COLLATE02Chinese_PRC_CI_AS02NOT02NULL02,02020202[Lg_Class]02[varchar]02(200)02COLLATE02Chinese_PRC_CI_AS02NOT02NULL02,02020202[Lg_Message]02[varchar]02(2000)02COLLATE02Chinese_PRC_CI_AS02NOT02NULL0202)0202GO02022.写log4j.properties文件,这里我的数据库举动是用的JTDS:
引用#
level
:
是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。
#
Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。
log4j.rootLogger=ERROR,DATABASE
log4j.addivity.org.apache=true
#
用于数据库
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:jtds:sqlserver://localhost:1433DatabaseName=databasename
log4j.appender.DATABASE.driver=net.sourceforge.jtds.jdbc.Driver
log4j.appender.DATABASE.user=username
log4j.appender.DATABASE.password=password
#
本处设置为"WARN"以上级别在数据库存储(默认情况使用rootLogger中的设置)
log4j.appender.DATABASE.Threshold=DEBUG
log4j.appender.DATABASE.sql=INSERT
INTO
log(optime,thread,infolevel,class,message)
VALUES
('%d{yyyy-MM-dd
HH:mm:ss}',
'%t',
'%p',
'%l',
'%m')
#
写入数据库中的表LOG4J的Message字段中,
#
内容%d(日期)%c:
日志信息所在地(类名)%p:
日志信息级别%m:
产生的日志具体信息
%n:
输出日志信息换行
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework]
%d
-
%c
-%-4r
[%t]
%-5p
%c
%x
-
%m%n3.在程序中需要将日志信息写入数据库的地方写入如下代码:
view
plainprint?
�0�2�0�2�0�2�0�2�0�2�0�2 首先将log4j的jar包和Logging的jar包导入到你的工程中,然后在工程src目录创建一个属性文件:log4j.properties,也可以放在某个包中,但是获取这个属性文件的时候就需要制定路径。1.创建日志数据表:
view plainprint?CREATE�0�2TABLE�0�2log�0�2(�0�2�0�2�0�2�0�2[Id]�0�2[int]�0�2IDENTITY�0�2(1,�0�21)�0�2primary�0�2key�0�2NOT�0�2NULL�0�2,�0�2�0�2�0�2�0�2[Lg_Date]�0�2[datetime]�0�2NOT�0�2NULL�0�2,�0�2�0�2�0�2�0�2[Lg_Thread]�0�2[varchar]�0�2(50)�0�2COLLATE�0�2Chinese_PRC_CI_AS�0�2NOT�0�2NULL�0�2,�0�2�0�2�0�2�0�2[Lg_Level]�0�2[varchar]�0�2(20)�0�2COLLATE�0�2Chinese_PRC_CI_AS�0�2NOT�0�2NULL�0�2,�0�2�0�2�0�2�0�2[Lg_Class]�0�2[varchar]�0�2(200)�0�2COLLATE�0�2Chinese_PRC_CI_AS�0�2NOT�0�2NULL�0�2,�0�2�0�2�0�2�0�2[Lg_Message]�0�2[varchar]�0�2(2000)�0�2COLLATE�0�2Chinese_PRC_CI_AS�0�2NOT�0�2NULL�0�2�0�2)�0�2�0�2GO�0�2�0�22.写log4j.properties文件,这里我的数据库举动是用的JTDS:
引用# level : 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。
# Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。
log4j.rootLogger=ERROR,DATABASE
log4j.addivity.org.apache=true
# 用于数据库
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:jtds:sqlserver://localhost:1433DatabaseName=databasename
log4j.appender.DATABASE.driver=net.sourceforge.jtds.jdbc.Driver
log4j.appender.DATABASE.user=username
log4j.appender.DATABASE.password=password
# 本处设置为"WARN"以上级别在数据库存储(默认情况使用rootLogger中的设置)
log4j.appender.DATABASE.Threshold=DEBUG
log4j.appender.DATABASE.sql=INSERT INTO log(optime,thread,infolevel,class,message) VALUES ('%d{yyyy-MM-dd HH:mm:ss}', '%t', '%p', '%l', '%m')
# 写入数据库中的表LOG4J的Message字段中,
# 内容%d(日期)%c: 日志信息所在地(类名)%p: 日志信息级别%m: 产生的日志具体信息 %n: 输出日志信息换行
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n3.在程序中需要将日志信息写入数据库的地方写入如下代码:
view plainprint?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)