前兩天須要完成標題所說的一個功能,網上也有不少解決辦法。我把我本身的一些想法寫下來供之後參考:java
import org.apache.log4j.Logger; /** * * @author ilxlf * */ public class SpecialServiceLog{ private static Logger logger = Logger.getLogger("SpecialServerLog"); private static SpecialServiceLog log = new SpecialServiceLog(); private SpecialServiceLog() { } public static synchronized SpecialServiceLog getInstance() { return log; } public void debug(String message) { logger.debug(message); } public void info(String message) { logger.info(message); } public void error(String message) { logger.error(message); } public void warn(String message) { logger.warn(message); } }
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" > <log4j:configuration> <appender name="specialLog" class="org.apache.log4j.rolling.RollingFileAppender"> <rollingPolicy class="org.apache.log4j.rolling.FixedWindowRollingPolicy"> <param name="activeFileName" value="slog.log"/> <param name="fileNamePattern" value="slog.%i.log"/> <param name="minIndex" value="1"/> <param name="maxIndex" value="10" /> </rollingPolicy> <triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy"> <param name="maxFileSize" value="1000000"/> </triggeringPolicy> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy MMM dd HH:mm:ss} : %m%n" /> </layout> </appender> <logger name="SpecialServiceLog" additivity="false"> <level value="info" /> <appender-ref ref="specialLog" /> </logger> </log4j:configuration>
這樣使用 SpecialServiceLog去記log,產生的log就會寫在slog.log裏面