當前位置:首頁 » 編程語言 » log4jsql日誌文件
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

log4jsql日誌文件

發布時間: 2022-09-01 21:24:23

① 使用log4j把日誌信息保存到資料庫

log4j包裡面有一個sql的appender,但我知道以前的版本中有bug,因為它生成SQL時用的是createStatement拼接字元串而不是PreparedStatement,因此當消息內容中有單引號或特殊符號時SQL都有語法錯誤執行不成功。


你需要自己擴展一下它提供自己的SQLAppender來做這件事。在網上搜索一個像decompiler這樣的Java反編譯器或從Apache網站去下載log4j源碼來看一下SQLappender是怎麼樣的,我們改寫它把這個bug解決了就可以用了。


如果你打算用ODBC數據源而不是JDBC來做,你需要確保你的JRE是Oracle/Sun提供的,因為像IBM的JRE就沒有自帶ODBC驅動程序,或者你自己去手工下載第三方的ODBC驅動程序。


從你的錯誤消息說 數據源找不到,對比下面這個圖片,你沒有設置它的 driver 參數,左邊所有以 set 開頭的方法就是表示你在 log4j.properties 文件中可以給它設置的參數,比如,setPassword 表示這個 JDBC Appender 有一個屬性 password。


log4j.appender.mySQLAppender.password = 密碼

log4j.appender.mySQLAppender.user = 用戶名

。。。 其它 set 方法對應的屬性列舉在這里。。。


依此類推。


② DRUID怎麼使用log4j把所有執行的sql記錄到.log日誌文件

把log4j.logger.druid.sql.Statement後面改成debug,然後 appender重新指定成文件,就能基本完成log sql的需要。不過他是連帶預編譯語句的創建,設置參數,執行這三種一起log的!

③ Log4J配置文件里的日誌文件路徑問題!!!急~

給你一個我們的項目文件自己看吧。。
希望老闆別發現。。。
# Global logging configuration

log4j.rootLogger=INFO,file

# SqlMap logging configuration...
log4j.logger.com.ibatis=INFO
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=INFO
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=INFO
log4j.logger.java.sql.Connection=INFO
log4j.logger.java.sql.Statement=INFO
log4j.logger.java.sql.PreparedStatement=INFO
log4j.logger.java.sql.ResultSet=INFO

# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold=DEBUG
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.stdout.Target=System.out
##########################
#log4j.appender.stdout.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.stdout.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n

# File output by days...
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.Threshold=ERROR
log4j.appender.file.file=${catalina.base}/logs/psp_error.log
log4j.appender.file.MaxFileSize=2000KB
log4j.appender.file.DatePattern="."yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %p [%c] - %m%n

# HTML output...
log4j.appender.sql_html=org.apache.log4j.RollingFileAppender
log4j.appender.sql_html.Threshold=DEBUG
log4j.appender.sql_html.File=${catalina.base}/logs/psp_sql.html
log4j.appender.sql_html.MaxFileSize=5000KB
log4j.appender.sql_html.MaxBackupIndex=1
log4j.appender.sql_html.layout=org.apache.log4j.HTMLLayout

④ log4j日誌文件,要記錄成什麼格式的,什麼樣的比較常用

有幾個級別:
static Level DEBUG
DEBUG Level指出細粒度信息事件對調試應用程序是非常有幫助的。

static Level INFO
INFO level表明 消息在粗粒度級別上突出強調應用程序的運行過程。

static Level WARN
WARN level表明會出現潛在錯誤的情形。

static Level ERROR
ERROR level指出雖然發生錯誤事件,但仍然不影響系統的繼續運行。

static Level FATAL
FATAL level指出每個嚴重的錯誤事件將會導致應用程序的退出。

另外,還有兩個可用的特別的日誌記錄級別:
static Level ALL
ALL Level是最低等級的,用於打開所有日誌記錄。

static Level OFF
OFF Level是最高等級的,用於關閉所有日誌記錄。

一般指定為:xxx.log
可以將service和數據操作的sql分開:
log4j.rootLogger=INFO,rootDailyRollingFile
log4j.logger.java.sql=DEBUG, SqlDailyRollingFile
##### rootDailyRollingFile#####
log4j.appender.rootDailyRollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.rootDailyRollingFile.File=d:\\weblog\\testprj\\root.log
log4j.appender.rootDailyRollingFile.DatePattern='.'yyyy-MM-dd
log4j.appender.rootDailyRollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rootDailyRollingFile.layout.ConversionPattern=%-r %d [%t] %-5p %c.%M(%F:%L) %x - %m%n

⑤ LOG4J 的日誌寫到了哪裡

va代碼
# log4j configuration file
##################################################################
# Pattern to output the caller's file name and line number.
##################################################################
#等級為INFO的日誌信息輸出到ota,ota的定義在下面的代碼,可以任意起名。#
#等級可分為OFF、 FATAL、ERROR、WARN、INFO、DEBUG、ALL,#
#如果配置OFF則不打出任何信息,#
#如果配置為INFO這樣只顯示INFO, WARN, ERROR的log信息,而DEBUG信息不會被顯示,具體講解可參照第三部分定義配置文件中的logger。#
log4j.rootLogger=INFO,CONSOLE,fileout
log4j.logger.fileout=INFO,fileout
log4j.logger.OTA=INFO,OTA
#配置輸出的類型#
#org.apache.log4j.ConsoleAppender(控制台),#
#org.apache.log4j.FileAppender(文件),#
#org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌文件),#
#org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)#
#org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)#
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

#此句為定義名為stdout的輸出端的layout是哪種類型,#
#org.apache.log4j.HTMLLayout(以HTML表格形式布局),#
#org.apache.log4j.PatternLayout(可以靈活地指定布局模式),#
#org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字元串),#
#org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息)#
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout

#pattern布局就要指定的列印信息的具體格式ConversionPattern,列印參數如下:#
#%m 輸出代碼中指定的消息#
#Ip 輸出優先順序,即DEBUG,INFO,WARN,ERROR,FATAL#
#%r 輸出自應用啟動到輸出該log信息耗費的毫秒數#
#%c 輸出所屬的類目,通常就是所在類的全名#
#%t 輸出產生該日誌事件的線程名#
#%n 輸出一個回車換行符,Windows平台為「rn」,Unix平台為「n」#
#%d 輸出日誌時間點的日期或時間,默認格式為ISO8601,也可以在其後指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921#
#%l 輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。$
#[OTC]是log信息的開頭,可以為任意字元,一般為項目簡稱。#
#輸出的信息#
#[OTC] DEBUG [main] AbstractBeanFactory.getBean(189) | Returning cached instance of singleton bean 'MyAutoProxy'#
#
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%n

#---- save to log file
log4j.appender.fileout=org.apache.log4j.RollingFileAppender
log4j.appender.fileout.File=e:/logs/run.log
log4j.appender.fileout.encoding=UTF-8
log4j.appender.fileout.Threshold=DEBUG
log4j.appender.fileout.MaxFileSize=4MB
log4j.appender.fileout.MaxBackupIndex=10
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.ConversionPattern=%-5p [%d] %C - %m%n

#---- save to log file
log4j.appender.OTA=org.apache.log4j.RollingFileAppender
log4j.appender.OTA.File=e:/logs/run2.log
log4j.appender.OTA.encoding=UTF-8
log4j.appender.OTA.Threshold=DEBUG
log4j.appender.OTA.MaxFileSize=4MB
log4j.appender.OTA.MaxBackupIndex=10
log4j.appender.OTA.layout=org.apache.log4j.PatternLayout
log4j.appender.OTA.layout.ConversionPattern=%-5p [%d] %C - %m%n

log4j.logger.com.ibatis = DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner = DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG
log4j.logger.java.sql.Connection = DEBUG
log4j.logger.java.sql.Statement = DEBUG
log4j.logger.java.sql.PreparedStatement = DEBUG, fileout
log4j.logger.java.sql.ResultSet = DEBUG

Java代碼
//它會寫到哪裡?
//經測試寫到了console 和run.log
Logger logger = Logger.getLogger(getClass);
//經測試寫到了console 和run.log
Logger rootLogger = Logger.getRootLogger();
//經測試寫到了console 和run.log run2.log
Logger fileout = Logger.getLogger("fileout");
經測試寫到了console 和run.log run2.log
Logger ota = Logger.getLogger("OTA");
logger.info("CLASS");
rootLogger.info("ROOT");
fileout.info("FILEOUT");
ota.info("OTA");

總結:
其中
Logger.getLogger(String name);
name即為appender的name
log4j.appender.fileout即為fileout

Logger.getLogger(Class clazz);
即獲取class.name後調用
Logger.getLogger(String name);

root為所有日誌的根
所以通過輸出結果來看,所有自定義的appender都是繼承自root的
它會
1、先輸出到appender定義的設備中(console file 或其他),如果name沒有對應的appender則不會輸出任何內容
2、再輸出到root

Class 和String的差別還是比較大的。

⑥ Mybatis使用log4j列印sql,沒有輸出resultSet

ybatis默認使用log4j,當有self4j這個日誌jar包存在時會無法列印sql

#需要debug

log4j.rootCategory=info,stdout,file

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# log4j.appender.stdout.layout.ConversionPattern= %-d{yyyy-MM-dd HH:mm:ss.SSS}, [%-9t], [%-5p], %C{1}.%M(%L), | %m%n
log4j.appender.stdout.layout.ConversionPattern= %-d{yyyy-MM-dd HH:mm:ss.SSS}, [%-9t], [%-5p], %C{1}.(%-3L), | %m%n

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.file=${webapp.root}/logs/My.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern= %-d{yyyy-MM-dd HH:mm:ss.SSS}, [%-9t], [%-5p], %C{1}.%M(%L), | %m%n

# OpenSymphony Stuff
log4j.logger.freemarker=info
log4j.logger.com.opensymphony=info
log4j.logger.com.opensymphony.xwork2.ognl=info
log4j.logger.org.apache.struts2=info

# Spring Stuff
log4j.logger.org.springframework=info

#mybatis Console
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG

log4j.logger.java.sql.PreparedStatement=DEBUG

########## new 20141225
# OpenSymphony Stuff
log4j.logger.freemarker=WARN
log4j.logger.com.opensymphony=WARN
log4j.logger.com.opensymphony.xwork2.ognl=WARN
log4j.logger.org.apache.struts2=WARN

# Spring Stuff
log4j.logger.org.springframework=WARN

#mybatis Console
###顯示SQL語句部分
log4j.logger.org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl=DEBUG
log4j.logger.java.sql=DEBUG,stdout

⑦ 如果用log4j讀取.log文件

有幾個級別:
static Level DEBUG
DEBUG Level指出細粒度信息事件對調試應用程序是非常有幫助的。
static Level INFO
INFO level表明 消息在粗粒度級別上突出強調應用程序的運行過程。
static Level WARN
WARN level表明會出現潛在錯誤的情形。
static Level ERROR
ERROR level指出雖然發生錯誤事件,但仍然不影響系統的繼續運行。
static Level FATAL
FATAL level指出每個嚴重的錯誤事件將會導致應用程序的退出。

另外,還有兩個可用的特別的日誌記錄級別:
static Level ALL
ALL Level是最低等級的,用於打開所有日誌記錄。

static Level OFF
OFF Level是最高等級的,用於關閉所有日誌記錄。

一般指定為:xxx.log
可以將service和數據操作的sql分開:
log4j.rootLogger=INFO,rootDailyRollingFile
log4j.logger.java.sql=DEBUG, SqlDailyRollingFile
##### rootDailyRollingFile#####
log4j.appender.rootDailyRollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.rootDailyRollingFile.File=d:\\weblog\\testprj\\root.log
log4j.appender.rootDailyRollingFile.DatePattern='.'yyyy-MM-dd
log4j.appender.rootDailyRollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rootDailyRollingFile.layout.ConversionPattern=%-r %d [%t] %-5p %c.%M(%F:%L) %x - %m%n

⑧ 資料庫異常信息為什麼沒有寫入log4j日誌文件中

log4j是一個優秀的開源日誌記錄項目,我們不僅可以對輸出的日誌的格式自定義,還可以自己定義日誌輸出的目的地,比如:屏幕,文本文件,資料庫,甚至能通過socket輸出。本節主要講述如何將日誌信息輸入到資料庫(可以插入任何資料庫,在此主要以MSSQL為例進行詳解)。
用log4j將日誌寫入資料庫主要用到是log4j包下的JDBCAppender類,它提供了將日誌信息非同步寫入數據的功能,我們可以直接使用這個類將我們的日誌信息寫入資料庫;也可以擴展JDBCAppender類,就是將JDBCAppender類作為基類。下面將通過一個實例來講解log4j是如何將日誌信息寫入資料庫的。
我們的需求:我們在軟體開發的過程中需要將調試信息、操作信息等記錄下來,以便後面的審計,這些日誌信息包括用戶ID、用戶姓名、操作類、路徑、方法、操作時間、日誌信息。
設計思想:我們採用JDBCAppender類直接將日誌信息插入資料庫,所有隻需要在配置文件配置此類就可以;要獲得用戶信息需要用過濾器來實現;(假如不需要用戶的信息,就不需要設計過濾器,其實大部分情況下都是需要這些用戶信息,尤其是在web應用開發中)在日誌信息中獲得用戶信息,就的通過過濾器的request或session對象,從session中拿到用戶信息怎樣傳到log4j呢,log4j為我們提供了MDC(MDC是log4j種非常有用類,它們用於存儲應用程序的上下文信息(context infomation),從而便於在log中使用這些上下文信息。MDC內部使用了類似map的機制來存儲信息,上下文信息也是每個線程獨立地儲存,所不同的是信息都是以它們的key值存儲在」map」中。相對應的方法,

MDC.put(key, value); MDC.remove(key); MDC.get(key);

在配置PatternLayout的時候使用:%x{key}來輸出對應的value)。有了MDC,我們可以在過濾器中先獲得用戶信息,再用MDC.Put(「key」)方法,log在執行sql語句時通過%x{key}來輸出對應的value。


實現步驟:
1、在你的項目中要確保有log4j和commons-logging這兩個jar文件;
2、設置要你要插入日誌信息的表結構

ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[WDZLOG]')andOBJECTPROPERTY(id,N'IsUserTable')=1)
droptable[dbo].[WDZLOG]
GO

CREATETABLE[dbo].[WDZLOG](
[WDZLOGID][int]IDENTITY(1,1)NOTNULL,
[LogName][varchar](255)COLLATEChinese_PRC_CI_ASNULL,//用戶ID
[UserName][varchar](255)COLLATEChinese_PRC_CI_ASNULL,//用戶姓名
[Class][varchar](255)COLLATEChinese_PRC_CI_ASNULL,//類名
[Mothod][varchar](255)COLLATEChinese_PRC_CI_ASNULL//,方法名
[CreateTime][varchar](255)COLLATEChinese_PRC_CI_ASNULL,//產生時間
[LogLevel][varchar](20)COLLATEChinese_PRC_CI_ASNULL,//日誌級別
[MSG][varchar](555)COLLATEChinese_PRC_CI_ASNULL//日誌信息
)ON[PRIMARY]
GO

3、配置文件(摘自我們的項目)後面將對此配置文件進行詳細講解,它也log4j的核心部分。

log4j.properties
log4j.rootLogger=INFO,stdout

log4j.logger.org.springframework.web.servlet=INFO,db

log4j.logger.org.springframework.beans.factory.xml=INFO
log4j.logger.com.neam.stum.user=INFO,db

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss}%p[%c]--<%m>%n

log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/exppower.log
log4j.appender.logfile.DatePattern=.yyyy-MM-dd
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d%p[%c]wang-<%m>%n

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

#JDBCAppender

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


#log4j.logger.business=INFO,db
#log4j.appender.db=com.neam.commons.MyJDBCAppender
log4j.appender.db=JDBCExtAppender

log4j.appender.db.BufferSize=10

log4j.appender.db.sqlname=log

log4j.appender.db.driver=net.sourceforge.jtds.jdbc.Driver

log4j.appender.db.URL=jdbc:jtds:SqlServer://localhost:1433;DatabaseName=pubs

log4j.appender.db.user=sa

log4j.appender.db.password=sa

log4j.appender.db.sql=insertintoWDZLOG(LogName,UserName,Class,Mothod,createTime,LogLevel,MSG)values('%X{userId}','%X{userName}','%C','%M','%d{yyyy-MM-ddHH:mm:ss}','%p','%m')

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

4、編寫過濾器(ResFilter.java)

importjava.io.IOException;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpSession;

importorg.apache.log4j.Logger;
importorg.apache.log4j.MDC;

importcom.neam.domain.User;

{


_USERID=Math.random()*100000.0;

publicvoiddestroy(){
}

publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,
FilterChainchain)throwsIOException,ServletException{
HttpServletRequestreq=(HttpServletRequest)request;
HttpSessionsession=req.getSession();
if(session==null){
MDC.put("userId",DEFAULT_USERID);
}
else{
Usercustomer=(User)session.getAttribute("user");
if(customer==null){
MDC.put("userId",DEFAULT_USERID);
MDC.put("userName",DEFAULT_USERID);
}
else
{
MDC.put("userId",customer.getName());
MDC.put("userName",customer.getName());
}
}
//logger.info("testforMDC.");

chain.doFilter(request,response);
}
publicvoidinit(FilterConfigConfig)throwsServletException{
//this.filterConfig=Config;
//Stringccc=Config.getServletContext().getInitParameter("cherset");
//this.targetEncoding=Config.getInitParameter("cherset");

}
}

5、在需要寫入日誌的地方引入

privateLoglogger=LogFactory.getLog(this.getClass());

在具體方法中就可以寫入日誌
logger.info("");
logger.debug("");
logger.warn("");
logger.error("");

配置文件詳解:
log4j.properties
log4j.properties
log4j.rootLogger=INFO,stdout


//配置根Logger,其語法為:
log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
level : 是日誌記錄的優先順序,分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。Log4j建議只使用四個級別,優先順序從高到低分別是ERROR、WARN、INFO、DEBUG。通過在這里定義的級別,您可以控制到應用程序中相應級別的日誌信息的開關。比如在這里定義了INFO級別,則應用程序中所有DEBUG級別的日誌信息將不被列印出來。
appenderName:就是指定日誌信息輸出到哪個地方。您可以同時指定多個輸出目的地。
例如:log4j.rootLogger=info,A1,B2,C3 配置了3個輸出地方我們可以設置讓A1在控制台輸出;B2生產日誌文件;C3讓日誌信息插入資料庫中。
本例中是將所有的日誌信息在控制台列印出來。
log4j.logger.org.springframework.web.servlet=INFO,db
//設置將spring下包的某些類的日誌信息寫入資料庫中,並且在控制台上列印出來。(是通過log4j.rootLogger=INFO,stdout來體現的)db是將日誌信息寫入資料庫中
log4j.logger.org.springframework.beans.factory.xml=INFO
//本實例中為了讓某些包下的日誌信息能寫入資料庫
log4j.logger.com.neam.stum.user=INFO,db
//設置自己某個模塊下的日誌信息既在控制台上列印而且往資料庫中保存

//下面是配置在控制台上列印日誌信息,在這里就不再仔細描述了
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p [%c] - - <%m>%n

//下面是配置將日誌信息寫入文件中,在這里也就不再仔細描述了
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/exppower.log
log4j.appender.logfile.DatePattern=.yyyy-MM-dd
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] wang- <%m>%n

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

# JDBC Appender

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


#log4j.appender.db=com.neam.commons.MyJDBCAppender
//下面是配置將日誌信息插入資料庫,
log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender
//配置輸出目標為資料庫(假如要將日誌在控制台輸出,配置為log4j.appender. stdout =org.apache.log4j.ConsoleAppender;將日誌寫入文件,配置為log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
這樣的配置在許多地方都要有,需要可查有關資料),當然你也可以自己擴展org.apache.log4j.jdbc.JDBCAppender這個類,只需要在這里配置就可以了例如我們配置我自己擴展的MyJDBCAppender,配置為#log4j.appender.db=com.neam.commons.MyJDBCAppender

log4j.appender.db.BufferSize=10
//設置緩存大小,就是當有10條日誌信息是才忘資料庫插一次

log4j.appender.db.driver=net.sourceforge.jtds.jdbc.Driver
//設置要將日誌插入到資料庫的驅動
log4j.appender.db.URL=jdbc:jtds:SqlServer://localhost:1433;DatabaseName=pubs

log4j.appender.db.user=sa

log4j.appender.db.password=sa

log4j.appender.db.sql=insert into WDZLOG (LogName,UserName,Class,Mothod,createTime,LogLevel,MSG) values ('%X{userId}','%X{userName}','%C','%M','%d{yyyy-MM-dd HH:mm:ss}','%p','%m')
//設置要插入日誌信息的格式和內容,%X{userId}是置取MDC中的key值,因為我們在過濾器中是將用戶id和用戶姓名放入MDC中,所有在這里可以用%X{userId}和%X{userName}取出用戶的ID和用戶姓名;'%C'表示日誌信息是來自於那個類;%M表示日誌信息來自於那個方法中;%d{yyyy-MM-dd HH:mm:ss}表示日誌信息產生的時間,{yyyy-MM-dd HH:mm:ss}表示一種時間格式,你也可以直接寫成%d;%p表示日誌信息的級別(debug info warn error);
%m表示你寫入的日誌信息
log4j.appender.db.layout=org.apache.log4j.PatternLayout

⑨ log4j2怎樣配置才能在控制台列印mybatis的sql日誌

首先配置 log4j日誌文件#mybatis日誌范圍
log4j.logger.com.nes=TRACE
#ibatis配置
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

2.導入依賴日誌包 log4j

<!-- SLFJ 可依賴到log4j-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>