java关于存取数据库后做日志记录问题,不是用log4j

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java关于存取数据库后做日志记录问题,不是用log4j相关的知识,希望对你有一定的参考价值。

环境:Apache+mysql+MyEclipse

SSH+jsp

在做一个小项目,其中要实现一个"日志管理"功能,即在其它模块对数据库做操作之后把操作记录下来(包括增删改查所有操作),保存到数据库中.在"日志管理"模块可以随时查出来

需要怎么实现?越详细越好

提供建议如下:
1.每个需要被日志管理的数据库映射类都加一个功能名称属性并赋值。
2.封装hibernate中提供的save方法(增、改)和delete方法(删)。
在save方法中先判断传过来的对象的id,有id为更改,无id为新增。然后向日志管理类添加对象。操作为新增或更改,功能为对象.get功能名称,其他如操作人员及时间等应该有公共类可以取得.
删除方法类似;
大概思路应该就是这样.
参考技术A 简单的日志管理刚刚做过一个,思路就是建一个日志表,用hibernate和类映射,在service层对该类封装几个增删改查的方法,然后在需要记日志的地方调用相应的方法,我这个项目中没用到spring。建议可以考虑用spring的面向切面实现。本回答被提问者采纳 参考技术B 1.设计一张日志表
字段包含
lid(编号)luser(操作者)ldate(操作时间)lcontext(操作描述)
2.编写一个类Log,里面有添加日志的静态方法(就是写插入一条记录到日志表),以后想添加一条日志的时候就直接调用该方法
3.使用,例如现在刚刚添加了一新人员的信息,那么可以调用Log类的静态方法插入一条日志。
4.查看日志,可以把查看日志的方法写在Log类里面,或者单独写都行。

日志的查询就是对日志表的查询,可以实现多种查询方式,例如按时间,按操作者,按内容模糊查找等。

这种方法以前做过几次了,看是不是你想要的。
参考技术C 手动管理,向一楼一样的.
进入函数体的时候写一次日志.
数据库操作完成后再写一次函数.
参考技术D 可以使用spring的aop来做,实现日志记录。

关于LOG那点事儿

日志,作为记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件,是产品运维中非常重要的数据之一,用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。


日志根据程序和不同领域,可分为消息日志,事件日志,数据库日志等等。


对于Java工程师而言,程序代码的日志是由工程师主动记录的一类为跟踪业务流程执行过程数据的日志,但很多程序员其实并不知道,LOG也是有国际标准的:


Emergency: system is unusable

Alert: action must be taken immediately

Critical: critical conditions

Error: error conditions

Warning: warning conditions

Notice: normal but significant condition

Informational: informational messages

Debug: debug-level messages  


其中标粗部分是程序员常见的一些日志等级,但在实际业务系统中,有可能不完全按照这个标准来定义日志,比如Java中的Log4j就有自己的一套日志等级体系。


在Java领域,其实有许多日志是被大家忽略的,大家最熟知的可能就是控制台日志输出了,其实从操作系统到数据库的各个环节都会产生日志,例如:windows的系统日志,Linux的syslog,docker的容器日志等。这里简要回顾一些常见后端服务中的日志:Nginx日志,mysql 日志 和 tomcat 日志。


Nginx日志主要分为两种:访问日志和错误日志。访问日志主要记录客户端访问Nginx的每一个请求,格式可以自定义。通过访问日志,可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息。错误日志主要记录客户端访问Nginx出错时的日志,格式不支持自定义。通过错误日志,可以得到系统某个服务或server的性能瓶颈等。在分析nginx 日志时, 老码农目前比较喜欢的工具是goaccess。


Tomcat下相关的日志文件有Cataline引擎的日志文件,文件名catalina。日期.log;Tomcat下内部代码丢出的日志,文件名localhost.日期.log;Tomcat下默认manager应用日志,文件名manager.日期.log ;控制台输出的日志,Linux下默认重定向到catalina.out ;通过Servlet.xml配置的Access日志,应用程序以log4j.properties:${catalina.base}/logs/probe.log重定向的日志等等。 就分析工具而言,老码农目前觉得Awstats是个不错的工具。


MySQL有以下几种日志:

错误日志:记录启动、运行或停止时出现的问题,一般也会记录警告信息。

一般查询日志:记录建立的客户端连接和执行的语句。

慢查询日志:记录所有执行时间超过longquerytime秒的所有查询或不使用索引的查询,可以帮我们定位服务器性能问题。

二进制日志:任何引起或可能引起数据库变化的操作,主要用于复制和即时点恢复。

中继日志:从主服务器的二进制日志文件中复制而来的事件,并保存为的日志文件。

事务日志:记录InnoDB等支持事务的存储引擎执行事务时产生的日志。


MySQL 中的日志不仅仅是跟踪信息,而且成为了业务系统的一部分。就日志分析而言,老码农最喜欢的就是percona-toolkit了,尤其是其中的慢查询分析工具pt-query-degist。


因此,日志存在于我们构建系统的方方面面,而充分地分析和监控日志,可以为系统的稳定运行与持续优化提供重要的情报来源,但日志往往是被程序员忽略的一个点。


以上是关于java关于存取数据库后做日志记录问题,不是用log4j的主要内容,如果未能解决你的问题,请参考以下文章

Java 中的日志记录是怎么回事? [关闭]

日志框架之Java原生日志框架JUL

一件关于数据库日志log的无聊事情

从 iOS 设备获取统一系统日志

关于一些日志的问题

关于Mysql数据库日志的问题