博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot 2.0 | Log4j2 日志写入数据库
阅读量:4104 次
发布时间:2019-05-25

本文共 3961 字,大约阅读时间需要 13 分钟。

1.建立存储用户登录日志表

create table `log`(     `id` int(11) NOT NULL AUTO_INCREMENT,     `username` varchar(255) DEFAULT NULL,     `userIP` varchar(255) DEFAULT NULL,     `actionClassName` varchar(6000) DEFAULT NULL,     `actionDate` varchar(255) DEFAULT NULL,     `result` varchar(6000) DEFAULT NULL,     PRIMARY KEY(`id`)     )ENGINE=InnoDB AUTO_INCREMENT =1 DEFAULT CHARSET = utf8;

2.添加maven依赖

org.apache.logging.log4j
log4j-api
2.11.1
org.apache.logging.log4j
log4j-core
2.11.1
com.alibaba
druid
1.0.14

3.配置拦截器Filter

package com.hly.sirius.filter;/** * @author :hly * @github :github.com/SiriusHly * @blog :blog.csdn.net/Sirius_hly * @date :2018/10/2 */@WebFilter(filterName = "VisitorFilter",urlPatterns = "/index")public class VisitorFilter extends OncePerRequestFilter {    private static Logger logger = LogManager.getLogger(VisitorFilter.class);    @Override    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {        HttpSession session = request.getSession();        String userId = (String) session.getAttribute("userId");        String userIP = request.getRemoteUser();        ThreadContext.put("userId",userId);        ThreadContext.put("userIP",userIP);        System.err.println("登录用户:"+userId);        System.err.println("登录IP:"+userIP);        logger.error("用户:"+userId);    }}

存取要保存到数据库的值

ThreadContext.put("userIP",userIP);

通过配置文件取得值,保存到数据库

在Application开启Servlet扫描注解

@ServletComponentScan(basePackages = {"com.hly.sirius.filter"})

4.连接数据库配置

package com.hly.sirius.config;/** * @author :hly * @github :github.com/SiriusHly * @blog :blog.csdn.net/Sirius_hly * @date :2018/10/2 */public class ConnectionFactoryConfig  {    private DruidDataSource dataSource;    private  static ConnectionFactoryConfig connectionFactoryConfig;    private Connection getConnection() throws SQLException {        System.err.println("实例化");        Properties properties = new Properties();        String user = "root";        String password = "roof";        String url = "jdbc:mysql://localhost:3306/sirius?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true";        String driverClassName = "com.mysql.jdbc.Driver";        properties.put("driverClassName",driverClassName);        properties.put("url",url);        properties.put("username",user);        properties.put("password",password);        try {            dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);        } catch (Exception e) {            try {               init();            } catch (Exception e2) {            }        }        return  dataSource.getConnection();    }    public static Connection getDatabaseConnection() throws SQLException {       if(connectionFactoryConfig==null){           connectionFactoryConfig = new ConnectionFactoryConfig();       }       return connectionFactoryConfig.getConnection();    }    public void init(){        try {            if (dataSource != null)                dataSource.close();        } catch (Exception e) {        }    }}

5.配置日志log4j2-spring.xml

%d [%t] %-5level %logger{36} - %msg%n

6.运行程序,数据插入数据库

 

你可能感兴趣的文章
k8s web终端连接工具
查看>>
手绘VS码绘(一):静态图绘制(码绘使用P5.js)
查看>>
手绘VS码绘(二):动态图绘制(码绘使用Processing)
查看>>
基于P5.js的“绘画系统”
查看>>
《达芬奇的人生密码》观后感
查看>>
论文翻译:《一个包容性设计的具体例子:聋人导向可访问性》
查看>>
基于“分形”编写的交互应用
查看>>
《融入动画技术的交互应用》主题博文推荐
查看>>
链睿和家乐福合作推出下一代零售业隐私保护技术
查看>>
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>
Piper Sandler为EverArc收购Perimeter Solutions提供咨询服务
查看>>
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>
JavaSE_day12 集合
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
Day_15JavaSE 异常
查看>>
异常 Java学习Day_15
查看>>
JavaSE_day_03 方法
查看>>
day-03JavaSE_循环
查看>>