在log4j中可以指定特定的输出源append。在数据库记录日志时,可以将日志文件记录到多个数据库表中。
测试类
# This is the configuring for logging displayed in the Application Server
log4j.rootCategory=DEBUG,logfile,stdout
log4j.logger.SYSTEM = INFO,JDBC
log4j.logger.OPERATION = INFO,JDBC2
#stdout configure
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= %d %p [%c] - <%m>%n
#logfile configure
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=../logs/moca_stm_stm.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern= %d{yyyy MM dd HH:mm:ss} %p [%c] - <%m>%n
#JDBC configure
log4j.appender.JDBC.Threshold=INFO
log4j.appender.JDBC=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.JDBC.driver=oracle.jdbc.driver.OracleDriver
log4j.appender.JDBC.URL=jdbc:oracle:thin:@192.168.140.13:1521:DMPT
log4j.appender.JDBC.user=moca_stm
log4j.appender.JDBC.password=moca_stm
log4j.appender.JDBC.layout=org.apache.log4j.PatternLayout
log4j.appender.JDBC.sql=INSERT INTO XK_SYS_LOG(USERID,LOGTIME,LOGLEVEL,LOCATION,MESSAGE)VALUES('%X{userId}','%d{yyyy-MM-dd HH:mm:ss}','%p','%l','%m')
log4j.appender.JDBC2.Threshold=INFO
log4j.appender.JDBC2=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.JDBC2.driver=oracle.jdbc.driver.OracleDriver
log4j.appender.JDBC2.URL=jdbc:oracle:thin:@192.168.140.13:1521:DMPT
log4j.appender.JDBC2.user=moca_stm
log4j.appender.JDBC2.password=moca_stm
log4j.appender.JDBC2.layout=org.apache.log4j.PatternLayout
log4j.appender.JDBC2.sql=INSERT INTO XK_SYS_LOG_2(USERID,LOGTIME,LOGLEVEL,LOCATION,MESSAGE)VALUES('%X{userId}','%d{yyyy-MM-dd HH:mm:ss}','%p','%l','%m')
测试类
package test;
import org.apache.log4j.Logger;
import org.apache.log4j.MDC;
public class LogTest {
private static Logger logger = Logger.getLogger("OPERATION");
//private static Logger logger = Logger.getLogger("SYSTEM");
//private static Logger logger = Logger.getLogger(LogTest.class);
public static void main(String[] args) {
MDC.put("userId", "用户ID");
logger.error("testError");
}
}