前两天须要完成标题所说的一个功能,网上也有不少解决办法。我把我本身的一些想法写下来供之后参考: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里面