它是什么?
- 这是配置自定义log打印器中的往文件里写日志的打印类;
它的实现是怎样的?
- 这里面运用到了 面向接口编程,线程池,文件流等要点
它的源码实现
public class HiFilePrinter implements HiLogPrinter {
private static final ExecutorService EXECUTOR = Executors.newSingleThreadExecutor();
private final String logPath;
private final long retentionTime;
private LogWriter writer;
private volatile PrintWorker worker;
private static HiFilePrinter instance;
/**
* 创建HiFilePrinter
*
* @param logPath log保存路径,如果是外部路径需要确保已经有外部存储的读写权限
* @param retentionTime log文件的有效时长,单位毫秒,<=0表示一直有效
*/
public static synchronized HiFilePrinter getInstance(String logPath, long retentionTime) {
if (instance == null) {
instance = new HiFilePrinter(logPath, retentionTime);
}
return instance;
}
private HiFilePrinter(String logPath, long retentionTime) {
this.logPath = logPath;
this.retentionTime = retentionTime;
this.writer = new LogWriter();
this.worker = new PrintWorker();
cleanExpiredLog();
}
@Override
public void print(@NonNull HiLogCo