Java web 中使用 log4j 将日志记录数据库

2023-05-16

环境参数:
jdk 1.8
idea 2019.2
mysql 8.x

一、创建项目

参考链接

  • Intellij Idea 创建JavaWeb项目入门
  • 用IDEA将普通Web项目转Maven项目
  • 添加log4j的依赖
<dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
  • 项目目录
    在这里插入图片描述
  • 拷贝依赖jar
    将连接mysqljar包,Log4j日志的jar包拷贝到 Tomcat安装目录下lib文件夹里

二、添加日志功能

  • 添加数据库表
DROP TABLE IF EXISTS `WDZLOG`;
CREATE TABLE `WDZLOG` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `Class` varchar(255) DEFAULT NULL,
  `Mothod` varchar(255) DEFAULT NULL,
  `CreateTime` varchar(255) DEFAULT NULL,
  `LogLevel` varchar(20) DEFAULT NULL,
  `LogLine` varchar(255) DEFAULT NULL,
  `MSG` varchar(555) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
  • 添加配置文件
#log4j.rootLogger=error,stdout,info,debug,error
log4j.rootCategory=info,stdout,database
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n

#下面是配置将日志信息插入数据库,
#配置输出目标为数据库(假如要将日志在控制台输出,配置为log4j.appender. stdout =org.apache.log4j.ConsoleAppender;将日志写入文件,配置为log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
#这样的配置在许多地方都要有,需要可查有关资料),当然你也可以自己扩展org.apache.log4j.jdbc.JDBCAppender这个类,只需要在这里配置就可以了例如我们配置我自己扩展的MyJDBCAppender,配置为#log4j.appender.db=com.neam.commons.MyJDBCAppender

log4j.appender.database=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.database.layout=org.apache.log4j.PatternLayout
log4j.appender.database.driver=com.mysql.cj.jdbc.Driver
#设置要将日志插入到数据库的驱动
log4j.appender.database.Threshold=info
#定义什么级别的错误将写入到数据库中
log4j.appender.database.BufferSize=1
#设置缓存大小,就是当有1条日志信息是才忘数据库插一次
log4j.appender.database.URL=jdbc:mysql://62.234.23.117:3306/atm?useSSL=false&&characterEncoding=utf8&allowPublicKeyRetrieval=true&serverTimezone=UTC
log4j.appender.database.user=root
log4j.appender.database.password=Yunduo2018&
log4j.appender.database.sql=insert into ATMLOG (Class,Mothod,createTime,LogLevel,LogLine,MSG) values ('%C','%M','%d{yyyy-MM-dd HH:mm:ss}','%p','%l','%m')

  • 初始化log4j

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

import javax.servlet.http.HttpServlet;


public class Log4jInit extends HttpServlet {
    private final Logger logger = Logger.getLogger(String.valueOf(Log4jInit.class));
    @Override
    public void init() {
        try{
            String path = getServletContext().getRealPath("/");
            String profile = path+getInitParameter("log4j");
            PropertyConfigurator.configure(profile);
            logger.info("日志初始化完成!!!");
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

  • 在web.xml中配置
<servlet>
        <servlet-name>Log4jInit</servlet-name>
        <servlet-class>util.Log4jInit</servlet-class>
        <init-param>
            <param-name>log4j</param-name>
            <param-value>/WEB-INF/classes/log4j.properties</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Log4jInit</servlet-name>
        <url-pattern>/atm/Log4jInit</url-pattern>
    </servlet-mapping>

三、实现结果

在这里插入图片描述

四、问题

  • 可能会遇到找不的配置文件的问题
  • 是因为路径写错误了(控制台会输出错误路径的)
  • 打开out文件夹,按照编译后的路径修改就可
    在这里插入图片描述

五、参考链接

  • Java web中使用Log4j记录日志信息
  • Log4j记录日志到数据库的一个实例

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java web 中使用 log4j 将日志记录数据库 的相关文章

  • chrony

    CentOS8 时间同步服务 CentOS7之前的版本用的是ntpdate服务 xff0c 之后用的是chrony服务 默认是安装的了 查看版本 root 64 centos8 rpm qi chrony Name chrony Versi
  • 网易云音乐(netease-cloud-music)无法通过图标打开,只能用命令行开启

    解决办法 xff08 两种任选其一 xff09 xff1a 1 打开文件桌面图标文件netease cloud music desktop xff1a sudo gedit usr share applications netease cl
  • java: 程序包org.apache.ibatis.annotations不存在

    这个错误是我在直接导入springboot项目的时候报错的 xff0c 解决方法是新建一个spring项目 xff0c 之后将相关文件导入该项目中解决的 导入项目出现错误时可以考虑这样处理一下试试
  • angularJS中把html格式的字符串转成html格式显示,ng-bind-html与trustAsHtml的过滤器

    分享一下我老师大神的人工智能教程 xff01 零基础 xff0c 通俗易懂 xff01 http blog csdn net jiangjunshow 也欢迎大家转载本篇文章 分享知识 xff0c 造福人民 xff0c 实现我们中华民族伟大
  • 【设计模式】生产者消费者模型

    带你轻松理解生产者消费者模型 xff01 生产者消费者模型可以说是同步与互斥最典型的应用场景了 xff01 文末附有模型简单实现的代码 xff0c 若有疑问可私信一起讨论 文章目录 一 xff1a 为什么要使用生产者消费者模型 xff1f
  • matlab的for循环

    a span class token operator 61 span span class token function rand span span class token punctuation span span class tok
  • 论文笔记之 Collaborative Deep Learning for Recommender Systems

    这篇论文是KDD2015的一篇用DL去做RS的论文 想法挺有意思的 看过论文的同学都知道整体的模型可以用下图表示 xff1a 这里只讲讲整体的思路与理解 xff1a 1 xff09 这是一个CF和CBF结合用bayes去做 2 xff09
  • QGC地面站参数调节

    校准 xff1a 1 选择机架 xff1a 一般用DJI Flame Wheel F450机架 xff0c 选择之后点击 应用并重启 xff1b 2 传感器校准 xff1a 无人机会重新连接地面站 xff0c 依次校准 磁罗盘 陀螺仪 xf
  • 【Java】线程超时(设置一段代码执行超时时间)

    引用原文 xff1a https blog csdn net educast article details 51864912 代码 public class ThreadTest public static void main Strin
  • HDFS入门简介

    HDFS是什么 xff1f 易于扩展的分布式文件系统运行在大量普通廉价机器上提供容错机制为大量用户提供性能不错的存取服务 设计目标 xff1a 自动快速检测应对硬件错误流式访问数据 以流的方式访问数据 xff0c 设计用于数据的批量处理 缺
  • Android对于Fragment的使用以及底部导航栏问题

    fragment 一直提示fragment类型不对 该错误是在我们创建的fragment类文件中导错了包 底部导航栏不显示文字 在该处加上app labelVisibilityMode 61 34 labeled 34 就可以全部显示了 原
  • 建立个人网站1:腾讯云域名购买,域名解析以及使用GitHub初步搭建网站

    建立个人网站1 申请域名 xff0c 域名解析以及使用GitHub初步显示 腾讯云的学生优惠申请了一个域名 然后用了GitHub的服务器搭了网站 xff0c github优点是不用备案 xff0c 域名解析把GitHub的个人域名复制过来就
  • SQL语句快查

    SQL语句 0 MYSQL登陆 mysql u root p 1 创建数据库 span class token keyword CREATE span span class token keyword DATABASE span span
  • Numpy 数据类型及转换

    今天写代码遇到数据类型相关的问题 xff0c 记忆不是很清楚 xff0c 所以总结归纳了一下 NumPy 数据类型 名称描述bool 布尔型数据类型 xff08 True 或者 False xff09 int 默认的整数类型 xff08 类
  • 安装phantomjs-prebuilt失败(已解决)

    今天使用 pyecharts snapshot 插件需要安装 phantomjs xff0c 结果报了下面得错误 xff0c 我不快乐了 xff1a 解决方法一 xff1a sudo npm i nrm g 安装nrm nrm 查看使用方法
  • 通信原理 AMI码和HDB3码的编码方式

    AMI 简介 AMI 消息码的 1 交替地变换为 43 1 和 1 xff0c 而 0 保持不变 优点 xff1a 没有直流成分 xff0c 高 xff0c 低频分量少 xff0c 编码电路简单 xff0c 可利用传号极性交替这一规律 观察
  • ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', syste

    好几天没用MySQL xff0c 今天出现了这个ERROR 2013 HY000 Lost connection to MySQL server at 39 reading initial communication packet 39 s
  • Ubuntu 10.04下安装libgtk2.0-dev

    转自 xff1a http chaoyang blog ustc edu cn index php archives 133 去看原文吧 xff0c 有些图粘不过来 好文章啊 学了一些知识 xff0c 谢谢作者 Problem 输入如下命令
  • Linux添加应用图标

    在Linux中 xff0c 有些软件因为采用源码编译或者其他的方式直接来进行安装 xff0c 一般通过bash脚本进行启动 xff0c 但对于有的用户来说 xff0c 更希望在桌面有一个桌面软件图标来方便打开 所以 xff0c 我们接下来将
  • NS2协议分析与仿真

    一 NS2安装 ns2需要的环境较为复杂 xff0c gcc版本不易过高 xff0c 以免无法编译成功 xff0c 推荐使用gcc 4 8 g 43 4 8 span class token comment 安装依赖 span span c

随机推荐