log4j+JDBC+mySQL 将对象写入数据库
??? 一、写前唠叨
????? 最近写了一个关于将对象通过log4j的形式保存到数据库的例子,因对这个log4j正在入门,所以做之前查过很多资料,不过网上的信息比较简单,如下:
??? 1.所有信息几乎全部在配置文件中进行获取,如:数据库相关的连接、用户名、密码、sql语句;日志相关的appender、输出、格式化、参数;
??? 2.写到数据库中的仅是一个字符串而不是一个对象,如:将一个对象本身以及它的各个数据作为一条记录存到数据库
??? 3.代码的灵活性较低,如:只能存比较简单的数据类型,如保存一个对象及属性的话,就不太容易做了。
? 当然,网上的这些资料当然是为了最基础的入门而做的,因此简单了些,但也不乏比较深奥的资料,比如穿件连接池,考虑缓存等等。。
?? 二、我的做法
???? 1.通过继承JDBCAppender实现日志的写入的
???? 2.通过JDBC连接数据库(也可通过HIBERNATE)
???? 3.数据库和log4j的基本信息配置到properties中,但数据库可以自由选择多种数据库(在配置文件中配置即可)
???? 4.将对象的属性存到库中
?? 三、项目例子
???? 1.项目结构图:见附件,项目结构图.png
???? 2. 数据库:MYSQL? 库名:LOG4J? 表名:LogMessage/StudentMessage
???????? 表结构请看附件:LogMessage.png/StudentMessage.png
???? 3.代码及说明
???? log4j.properties:分别输出指定为:控制台、文件(log.log)、数据库
?
??? Bean包中的类——HashMapping.java:将属性设置成常量(即键-值对中的键),便于代码中进行键值对的读取。
?
?Dao中的包——StudentsUtil.java/UserUtil.java:对各自的表进行数据库的操作
?
package test;import java.lang.reflect.InvocationTargetException;import org.apache.log4j.Logger;import org.apache.log4j.MDC;import org.apache.log4j.PropertyConfigurator;import org.apache.log4j.jdbc.JDBCAppender;import org.omg.CORBA.Request;import dao.GetObject;import bean.Students;import bean.UserBean;public class Test {public static void main(String[] args) {Test dbt = new Test();dbt.testUser();}public void testUser() {try {GetObject go = new GetObject();UserBean ub = go.insertInfo("EE-YY", "YY-12345");go.getMethod(ub);// Students st = go.insertInfo("YY", 21, 2);// go.getMethod(st);} catch (SecurityException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}?结果见附加:stuM.png/logM.png
?
?
?