zoukankan      html  css  js  c++  java
  • [Java]log4j写SQL Server数据库日志的统一写法

     

    [Java]log4jSQL Server数据库日志的统一写法

    编写者

    日期

    关键词

    郑昀@ultrapower

    2005-7-19

    Java log4j sqlserver

     

    SQL Server 2000 Driver for JDBC Service Pack 3的下载

    之前需要注意一点,sql server同样必须打上了sp3的补丁,然后才能与jdbc for sqlserver sp3连接。如果是"Error establishing socket"错误,很有可能是要在sql上打sp3补丁。

    下面是对运行log4jMS SQL Server 2000 SP3日志的计算机的要求:

    •   SQL Server 2000 Driver for JDBC Service Pack 3您可以从以下位置下载并安装适应于SQLServer SP3jdbc版本:
      浏览

    http://www.microsoft.com/downloads/details.aspx?familyid=07287B11-0502-461A-B138-2AA54BFDC03A&displaylang=en

    如果只是log4jsql server,我们只需要下载这个包中的mssqlserver.tar

    即可,不必安装jdbc

    http://www.microsoft.com/downloads/info.aspx?na=46&p=3&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=07287B11-0502-461A-B138-2AA54BFDC03A&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f4%2f1%2fd%2f41d3e9c0-64d1-451e-947b-7a4cba273b2d%2fmssqlserver.tar

    下载信息为:

    l         Download files belowQuick InfoVersion:  2.2.0040

    l         Date Published:  7/6/2004

    l         Language:  English

    l         Download Size:  2883 KB*

    得到jar

    mssqlserver.tar解压缩出:

    l         msbase.jar

    l         msutil.jar

    l         mssqlserver.jar

    如果是做基于Tomcatweb应用,请放在tomcatcommon\lib文件夹下。并让你的工程加入对它们的引用。

    数据库日志表的准备

    在数据库中准备一个这样的表,jws_log

    生成脚本:

    CREATE TABLE [dbo].[jws_log] (

        [nId] [int] IDENTITY (1, 1) NOT NULL ,

        [dtDate] [datetime] NOT NULL ,

        [sThread] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,

        [sLevel] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL ,

        [sLogger] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL ,

        [sMessage] [varchar] (2000) COLLATE Chinese_PRC_CI_AS NOT NULL ,

        [sException] [varchar] (4000) COLLATE Chinese_PRC_CI_AS NULL

    ) ON [PRIMARY]

    GO

     

    ALTER TABLE [dbo].[jws_log] WITH NOCHECK ADD

        CONSTRAINT [PK_jws_log] PRIMARY KEY  CLUSTERED

        (

            [nId]

        )  ON [PRIMARY]

    GO

    其中,sLevel字段代表日志的级别;sLogger字段代表日志是由哪一个类或者文件产生的,如

    iNotes.Default.Page_Load(c:\mailsource\default.aspx.cs:269)”;sMessage字段代表日志的内容。

    工程中Log4J的配置

    对工程的属性文件,需要如此配置:

     配置:

    log4j.rootLogger=DEBUG,CONSOLE,DATABASE

    log4j.addivity.org.apache=true

    ########################

    # JDBC Appender

    #######################

    log4j.appender.DATABASE.Threshold=INFO

    log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender

    #log4j.appender.DATABASE.BufferSize=10

    log4j.appender.DATABASE.URL=jdbc:microsoft:sqlserver://192.168.1.111:1433;DatabaseName=ultra_domino

    log4j.appender.DATABASE.driver=com.microsoft.jdbc.sqlserver.SQLServerDriver

    log4j.appender.DATABASE.user=sa

    log4j.appender.DATABASE.password=

    log4j.appender.DATABASE.sql=INSERT INTO wap_mail_jws_log  VALUES ('%d{yyyy-MM-dd HH:mm:ss}', '%t', '%p', '%l', '%m', '')

    log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout

          

    下面我们对“%d %t %p %l %m %n”一一讲解:

    l         %d输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss},输出类似:2005-7-19 17:49:27,刚好适合插入SQLServer

    l         %t  产生该日志事件的线程名

    l         %p 日志的log_level,如DEBUGWARN或者INFO

    l         %c  输出所属的类目,通常就是所在类的全名,如“iNotes.Default”;

    l         %m 日志的内容;

    l         %l  输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。如write2database.main(write2database.java:33)

    l         %n  输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n

    工程中调用Log4J

    工程中的写法:

     代码:

    import sun.jdbc.odbc.*;

    import java.sql.*;

     

    import org.apache.log4j.Category;

    import org.apache.log4j.Level;

    import org.apache.log4j.Logger;

    import org.apache.log4j.PropertyConfigurator;

    import org.apache.log4j.jdbc.*;

     

    /*

        add for log4j: class Logger is the central class in the log4j package.

        we can do most logging operations by Logger except configuration.

        getLogger(...): retrieve a logger by name, if not then create for it.

        */

        static Logger logger = Logger.getLogger

                ( write2database.class.getName () ) ;

           

    /*

            add for log4j: class BasicConfigurator can quickly configure the package.

            print the information to console.

            */

            PropertyConfigurator.configure ( "log4j2database.properties" ) ;

           

            logger.info ( "just test" ) ;

     

           运行起来,你就会看到有这样的sql语句被执行了:

           INSERT INTO jws_log  VALUES ('2005-07-19 17:48:50', 'main', 'INFO', 'write2database.main(write2database.java:33)', 'just test', '')

     

    编写者

    日期

    关键词

    郑昀@ultrapower

    2005-7-19

    Java log4j sqlserver

     

  • 相关阅读:
    大数据学习笔记01
    寻址方式
    指令格式
    虚拟存储器
    高速缓冲存储器Cache
    双端口RAM和多模块存储器
    主存储器与CPU的连接
    半导体存储器
    存储系统——基本概念
    算术逻辑单元
  • 原文地址:https://www.cnblogs.com/zhengyun_ustc/p/196053.html
Copyright © 2011-2022 走看看