如何配置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?

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


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存