不行吧,log4j是日志管理,日志肯定都是放到文件里的,如果要存数据库,那么自己写代码啊。也不难啊。当然,你也可以重写log4j里面的方法,使之有你的功能

解决方案 »

  1.   

    可以:
    <appender name="JDBC" class="org.apache.log4j.jdbc.JDBCAppender">
        <param name="BufferSize"  value="0" />
        <param name="Driver"  value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
        <param name="URL"  value="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=abc" />
        <param name="User"  value="sa" />
        <param name="Password"  value="123" />
        <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern" value="INSERT INTO log4j (createDate,thread,priority,category,message) values('%d{yyyy-MM-dd HH:mm:ss.SSS}','%t','%-5p','%c','%m')" />
        </layout>
      </appender>log4j 表结构如下,我自己创建的 
    CREATE TABLE Sys_Log4j/*log4j日志记录*/ (
    logID INT IDENTITY NOT NULL,
    message VARCHAR ( 1024 ),
    priority VARCHAR ( 10 ),
    milliseconds INT,
    category VARCHAR ( 256 ),
    thread VARCHAR ( 100 ),
    NDC VARCHAR ( 256 ),
    createDate DATETIME default getdate(),
    location VARCHAR ( 256 ),
    caller VARCHAR ( 100 ),
    method VARCHAR ( 100 ),
    filename VARCHAR ( 100 ),
    line INT,
    CONSTRAINT PK__Sys_Log4j__117F9D94 PRIMARY KEY CLUSTERED (logID)
    )
    GO
      

  2.   

    我大概知道了
    配置文件中的BufferSize
    是什么意思啊?
      

  3.   

    <param name="BufferSize"  value="0" />log内容达到多少k后,才执行jdbc,这里为0,每执行一条log,都立即往数据库插入