log4j.Log4j.properties
log4j.rootLogger = DEBUG,A1,A2
log4j.appender.A1 = org.apache.log4j.ConsoleAppender log4j.appender.A1.Target = System.out log4j.appender.A1.layout = org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern =[%d{HH:mm:ss}] [%t] %-5p - %m %n
#in log log4j.appender.A2 = org.apache.log4j.RollingFileAppender log4j.appender.A2.File = test.log log4j.appender.A2.MaxFileSize = 1MB log4j.appender.A2.MaxBackupIndex = 3 log4j.appender.A2.DatePattern='.'yyyy-MM-dd-HH'.log' log4j.appender.A2.layout = org.apache.log4j.PatternLayout log4j.appender.A2.layout.ConversionPattern =[%d] %-4r [%t] %-5p %c %x - %m %n
#in database #log4j.appender.A3 = org.apache.log4j.jdbc.JDBCAppender #log4j.appender.A3.BufferSize = 40 #log4j.appender.A3.Driver = sun.jdbc.odbc.JdbcOdbcDriver #log4j.appender.A3.URL = jdbc:ODBC:driver={Microsoft Access Driver (*.mdb)};DBQ=MobileDB.mdb #log4j.appender.A3.User = #log4j.appender.A3.Password = #log4j.appender.A3.layout = org.apache.log4j.PatternLayout #log4j.appender.A3.layout.ConversionPattern = INSERT INTO log4j(createDate, thread, priority, category, message) values('%d', '%t', '%-5p', '%c', '%m')
#in html log4j.appender.A4 = org.apache.log4j.DailyRollingFileAppender log4j.appender.A4.File = log.html log4j.appender.A4.DatePattern='.'yyyy-MM-dd-HH'.html' log4j.appender.A4.layout = org.apache.log4j.HTMLLayout
Log4JInit.java
public void init() throws ServletException { // Put your code here String prifix = getServletContext().getRealPath("/"); String file = getInitParameter("log4j-init-file"); if (file != null) { Properties prop = new Properties(); try { Calendar calendar = Calendar.getInstance(TimeZone.getDefault()); calendar.setTime(new Date()); String year = String.valueOf(calendar.get(Calendar.YEAR)); String month = String.valueOf(calendar.get(Calendar.MONDAY)+1); String day = String.valueOf(calendar.get(Calendar.DATE)); String path = "d:/" + year + "/" + month + "/" + day; System.out.println(path); File filepath = new File(path); if(!filepath.exists()) { filepath.mkdirs(); } prop.load(new FileInputStream(prifix + file)); prop.setProperty("log4j.appender.A2.File", path + "/" + prop.getProperty("log4j.appender.A2.File")); PropertyConfigurator.configure(prop); String outFile = path + "/" + prop.getProperty("log4j.appender.A2.File"); final LoopedStreams ls = new LoopedStreams(); // 重定向System.out和System.err PrintStream ps = new PrintStream(ls.getOutputStream()); System.setOut(ps); System.setErr(ps);
//java.io.OutputStream outputStream = new java.io.OutputStream(outFile); //PrintStream ps = new PrintStream(outputStream); //System.setOut(ps); //System.setErr(ps); } catch (Exception e) { log.debug(e.toString()); e.printStackTrace(); } } }
web.xml
<servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>Log4JInit</servlet-name> <servlet-class>com.common.Log4JInit</servlet-class> <init-param> <param-name>log4j-init-file</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>Log4JInit</servlet-name> <url-pattern>/servlet/Log4JInit</url-pattern> </servlet-mapping>