之前使用过logstash,发现它的文件写入功能比log4j更加完善
logstash允许动态创建文件夹,我只使用了按照日期创建日志文件
如果配置日志路径如下
/home/log/log/%{yyyy}/%{MM}/%{dd}-log.log
那么就会创建路径为/home/log/log/2018/06/12-log.log的文件
log4j有个DailyRollingFileAppender,支持按一定时间规则写入日志,但是创建规则是在原有的日志文件之后加上时间后缀,这样所有日志文件都在一个文件夹,非常不友好
因此,我自定义了appender,允许创建文件夹的方式存储日志文件,每天凌晨写入新的日志文件
内容如下
import org.apache.log4j.spi.LoggingEvent;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author 墨盒
*/
public class EveryDayRollingFileAppender extends FileAppender {
private SimpleDateFormat format;
private String fileName;
private Level level;