如何配置log4j2日志记录至数据库

如何配置log4j2日志记录至数据库,第1张

配置log4j2日志记录至数据库

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>

view

plainprint?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?


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9642083.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存