`
blueram
  • 浏览: 757402 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

配置log4j写入数据库

阅读更多
首先按tomcat +sqlserver 数据连接池 中的方法配置数据连接池。

\WEB-INF\lib文件夹加入包msbase.jar;mssqlserver.jar;msutil.jar;log4j-1.2.8.jar

放在WEB_INF\class文件夹下的log.properties文件的内容如下

#输出到F:/home/example.log
log4j.rootLogger=DEBUG, A1
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.File=F:/home/example.log
log4j.appender.A1.MaxBackeupIndex=1
log4j.appender.A1.MaxFileSize=1MB
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%-5p][%d]%n%m%n%n

#控制台输出
#log4j.logger.A2=, myAppender
#log4j.appender.A1=org.apache.log4j.ConsoleAppender
#log4j.appender.A1.layout=org.apache.log4j.PatternLayout
#log4j.appender.A1.layout.ConversionPattern= [%-5p][%d]%n%m%n%n

#写入数据库
#log4j.rootLogger=DEBUG, DATABASE 
#log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender//(root日志记录器的存储器)
#log4j.appender.DATABASE.URL=jdbc:microsoft:sqlserver://localhost:1433;SelectMethod=cursor
#log4j.appender.DATABASE.driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
#log4j.appender.DATABASE.user=sd //用户名
#log4j.appender.DATABASE.password=
#log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('%d %c %p %m%n')//写入pubs数据库中的表LOG4J的Message字段中,内容%d(日期)%c: 日志信息所在地(类名)%p: 日志信息级别%m: 产生的日志具体信息 %n: 输出日志信息换行 
#log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
#log4j.appender.DATABASE.layout.ConversionPattern=%d %c %p %m%n

类文件中的使用方法

import org.apache.log4j.Logger;

import javax.sql.DataSource;
import javax.naming.Context;
import javax.naming.InitialContext;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Vector;

/**
* 封装DataSource
*
* @version 1.0, 2005-9-16 11:18:44
*/

public class DataSourcePackBean {
     /**
      * log4j
      */
     private Logger logger = Logger.getLogger(DataSourcePackBean.class);

//DataSourcePackBean.class日志记录器的名与类名相同;

     /**
      * 引用名
      */
     private String ref;

     /**
      * DataSource对象
      */
     private DataSource ds;

     /**
      * 保存当前DataSource对象中所有打开的Connection对象的引用。
      */
     private Vector openedConnections = new Vector();

     /**
      * 接收DataSource引用名,查找DataSource对象。
      *
      * @param ref DataSource引用名
      */
     protected DataSourcePackBean(String ref) {
         this.ref = ref;
         this.ds = lookup(ref);
     }

     public String getRef() {
         return ref;
     }

     public int getActive() {
         return openedConnections.size();
     }

     /**
      * 打开一个连接
      *
      * @param username 连接数据库的登录用户名,如果为null,表示用默认用户连接
      * @param password 连接数据库的登录密码
      * @return
      * @throws SQLException
      */
     public Connection getConnection(String username, String password) throws SQLException {
         Connection conn = (username == null) ? ds.getConnection() : ds.getConnection(username, password);
         // add to vector
         openedConnections.add(conn);
         // log
         StringBuffer log = new StringBuffer();
         log.append("Open").append(" a connection(").append(conn.hashCode()).append(") of [").append(ref).append("]\n");
         log.append(openedConnections.size()).append(" connection").append(" in use");
         logger.debug(log);
         // return
         return conn;
     }

     /**
      * 关闭一个连接
      *
      * @param conn
      * @throws SQLException
      */
     public void closeConnection(Connection conn) throws SQLException {
         conn.close();
         // remove from Vector
         openedConnections.remove(conn);
         // log
         StringBuffer log = new StringBuffer();
         log.append("Close").append(" a connection(").append(conn.hashCode()).append(") of [").append(ref).append("]\n");//添加内容到日志记录中
         log.append(openedConnections.size()).append(" connection").append(" in use");
         logger.debug(log);
     }

     /**
      * close all Connection of this DataSource
      * @throws SQLException
      */
     public void closeAll() throws SQLException {
         for (int i = 0; i < openedConnections.size(); i++) {
             ((Connection)openedConnections.get(i)).close();
         }
         // clear Vector
         openedConnections.removeAllElements();
     }

     /**
      * get a DataSource
      * @param ref the JNDI name of the DataSource
      * @return
      */
     private DataSource lookup(String ref) {
         DataSource dataSource = null;
         // 查找ref数据源对象
         try {
             Context env = new InitialContext();
             dataSource = (DataSource) env.lookup(ref);
             // 测试数据库有效性
             dataSource.getConnection().close();
             logger.debug(new StringBuffer().append("DataSource[").append(ref).append("] has been initialized successfully."));
         } catch (Exception e) {
             e.printStackTrace();
         }
         // return
         return dataSource;
     }

     public SQLRunnerIfc getSQLRunner(String username, String password) throws SQLException {
         return new SQLRunner(username, password, this);
     }

     public SQLRunnerIfc getSQLRunner() throws SQLException {
         return getSQLRunner(null, null);
     }
}

 

分享到:
评论

相关推荐

    log4j写入数据库配置

    log4j写入数据库配置

    log4j学习笔记及写入数据库配置

    log4j学习笔记及写入数据库配置,一份log4j学习资料。还包含log4j写入数据库的配置方法。

    log4j2.xml记录日志到到数据库

    演示了java记录通过log4j2记录日志到mysql数据库中

    日志配置到文件,数据库

    非常实用,但是有些小瑕疵,自己注意修改,有更好的也希望上传,欢迎下载。

    Loger_slf4j写入数据表Demo

    一、运行部署 1、将LogerWriteMySqlDemo... 其示例中取warn级别及写入数据库配置:database 三、配置文件db.properties、log4j.properties两个配置文件可以通过servlet配置来使用,也可以直接先用DbUtil.java中先测试

    log4j培训+源码

    log4j的培训文档和源码,包括java项目和web项目。从文件的配置,初始化,到写入文件,控制台和数据库等。

    Log4J使用(中文)

    本文是根据项目需要,总结一些网文所写,都是经过测试。内容包括:环境搭建、配置文件结构介绍、写入文件、写入数据库、按大小写入文件、按应用写入文件、按日期生成文件等。

    oracle数据库经典题目

    14. 每个Oracle 10g数据库在创建后都有4个默认的数据库用户:system、sys、sysman和DBcnmp 15. Oracle提供了两种类型的权限:系统权限和对象权限。系统权限提供了在Oracle数据库系统范围内执行某种任务的操作能力...

    Spark-Streaming:Spark Streaming实时解析flume和kafka传来的josn数据写入mysql

    Spark-Streaming简单小项目 Spark Streaming实时解析...配置log4j.properties、my.properties 另,还需将您的spark和hadoop安装文件下的core-site.xml、hdfs-site.xml和hive-site.xml拷贝到src\main\resources目录下

    毕业设计-基于微信小程序的在线小说应用

    |- init-database.js --- 初始化数据库,主要是往数据库写入一些书籍数据 |- utils |- chineseToNum.js --- 解析数字,比如一千二百会变成1200 |- fakeUserAgent.js --- 随机userAgent,反爬虫 |- log.js --- ...

    lgr:R的功能齐全的日志记录框架

    分层记录器,例如log4j和python日志记录。 如果您希望能够基于每个程序包配置日志记录,这将很有用。 每个记录器的任意数量的附加程序。 单个记录器可以写入控制台,日志文件,数据库等。 允许在日志事件中使用...

    ssh(structs,spring,hibernate)框架中的上传下载

     本文选用的数据库为Oracle 9i,当然你可以在不改动代码的情况下,通过配置文件的调整将其移植到任何具有Blob字段类型的数据库上,如MySQL,SQLServer等。  总体实现  上传文件保存到T_FILE表中,T_FILE表结构...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    log4j logback commong logging jdk logger 测试框架 测试框架 junit easymock testng mockito bug管理 禅道 jira 开发工具 编程工具 eclipse myeclipse idea vi VS webstorm sublime text ...

    网管教程 从入门到精通软件篇.txt

    、Lipper、FoxPro、Arago、Wordtech、Xbase和类似数据库或与数据库有关产品识别;可用数据文件(能被Excel 97打开);Oracle 8.1.x表格空间文件 DBX:DataBearn图像;Microsoft Visual FoxPro表格文件 DCT:...

    MySQL 5.1参考手册

    1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5. MaxDB数据库管理系统概述 1.5.1. 什么是MaxDB? 1.5.2. ...

    jpivot学习总结.doc

    1. jpivot加入其它应用中 解压jpivot.war 文件,在你的应用...在一个 JSP 页面当中,如果要使用 JPivot 标签库,除了要配置相关的配置文件外,我们需要在 JSP 头的位置声明对 JPivot 标签库的引用,引用方法如下: ...

    winxp系统结构5课(注册表)->1认识注册表

    注册表配置单元 支持文件 HKEY_LOCAL_MACHINE\SAM Sam、Sam.log、Sam.sav HKEY_LOCAL_MACHINE\Security Security、Security.log、Security.sav HKEY_LOCAL_MACHINE\Software Software、Software.log、...

    MySQL 5.1中文手冊

    1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5. MaxDB数据库管理系统概述 1.5.1. 什么是MaxDB? 1.5.2. ...

    MySQL 5.1参考手册 (中文版)

    1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5. MaxDB数据库管理系统概述 1.5.1. 什么是MaxDB? 1.5.2. ...

    mysql官方中文参考手册

    1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5. MaxDB数据库管理系统概述 1.5.1. 什么是MaxDB? 1.5.2. ...

Global site tag (gtag.js) - Google Analytics