<appender name="file" class="org.apache.log4j.RollingFileAppender">
?<param name="File" value="log.log"/>
?<layout class="org.apache.log4j.PatternLayout">
?<param name="ConversionPattern" value=" %d{ISO8601} [%c]- %m%n"/>
?</layout>
</appender>
<appender name="error" class="org.apache.log4j.RollingFileAppender">
??<param name="File" value="error.log"/>
??<param name="MaxBackupIndex" value="300"/>
??<param name="Encoding" value="GB2312"/>
??<param name="MaxFileSize" value="20MB"/>
??<layout class="org.apache.log4j.PatternLayout">
???<param name="ConversionPattern" value="%d{ISO8601} %p [%c] - [%m]%n"/>
??</layout>
??? <filter class="org.apache.log4j.varia.LevelRangeFilter">
??<!-- 過濾,只記錄error信息-->
??<param name="LevelMin" value="error"/>
??<param name="LevelMax" value="error"/>
??<param name="acceptOnMatch" value="true"/>
??? </filter>
</appender>
<appender name="startup" class="com.aspire.TimeSizeRollingFileAppender">
??<!--該類使自己從FileAppender派生,可以自己控制輸出文件的路徑 -->
??<param name="File" value="log/startup/startup.log" />
??<param name="Encoding" value="GBK" />
??<layout class="org.apache.log4j.PatternLayout">
???<param name="ConversionPattern" value="%m %d{ISO8601}- %m%n %p %l%n" />
??</layout>
</appender>
<logger name="biz.startup">
<!--Logger logger = Logger.getLogger("biz.startup") 可以這樣來調用本logger-->
??<level value="debug" />
??<appender-ref ref="startup" />
</logger>
<logger name="com.aspire" additivity="false">
<!--Log log = LogFactory.getLog(TestLog4j.class) 此時如果TestLog4j
??? 位于com.aspire包下面,那么使用本logger
?-->
??<level value="debug"/>
??<appender-ref ref="error"/>
</logger>
<root>
<level value="info"/>
<!-- 默認輸出到log.log-->
<appender-ref ref="file"/>
</root>
</log4j:configuration>
***********? log4j 配置文件結束 ************
**********? 派生的TimeSizeRollingFileAppender類*****
package com.aspire;
import org.apache.log4j.FileAppender;
import org.apache.log4j.spi.ErrorCode;
import java.io.File;
import java.io.IOException;
public class TimeSizeRollingFileAppender
??? extends FileAppender
??? implements ErrorCode {
? private final static String FS = System.getProperty("file.separator");
? public TimeSizeRollingFileAppender() {
? }
? public void setFile(String file) {
??? String val = file.trim();
??? File domain = new File(".");
??? try {
????? fileName = domain.getCanonicalPath() + FS + val;
??? }
??? catch (IOException ex) {
????? ex.printStackTrace();
??? }
? }
}
********** TimeSizeRollingFileAppender 類結束 ******
************ 調用示例 TestLog4j類 **************
package com.aspire;
import org.apache.log4j.Logger;
import org.apache.log4j.LogManager;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.xml.DOMConfigurator;
import org.apache.commons.logging.Log;
public class TestLog4j {
? private Logger logger = Logger.getLogger("biz.startup");
? private Log log = LogFactory.getLog(TestLog4j.class);
? public static void config(){
??? DOMConfigurator.configure("conf\\log4jConf.xml");
? }
? public void Test(){
??? /**
???? * error > warn > info > debug
???? */
??? logger.error("*****error*****");
??? logger.debug("****debug*****");
??? logger.warn("*****warn******");
??? logger.info("*****info******");
??? log.error("中華之崛起!");
? }
? public static void main(String [] argv){
??? TestLog4j t = new TestLog4j();
??? TestLog4j.config();
??? t.Test();
? }
}
***************? TestLog4j end ***********