使用场景:
最近做的一个项目中使用了logback,每次启动项目以后会保存很多日志在本地,而且没有大小限制,也不会自动删除
之间没事的时候就手动删除一下,没有重视这个问题,但是有时间忘了删,导致隔一段时间以后项目里的日志文件占用极大空间,而且在全局搜索的时候会搜到日志里的代码,并且会有些卡。
我没有研究过logback的使用方法,所以没法从配置上下手(应该是可以屏蔽掉本地生成日志文件)
这里选择在项目实例销毁的时候自动删除一下日志文件(也算是自动删除了,hhh)
直接上代码:
package com.mgicode;
import java.io.File;
import javax.annotation.PreDestroy;
import org.springframework.stereotype.Component;
import cn.hutool.core.io.FileUtil;
/**
* @author uni
*/
@Component
public class AutoDeleteClass {
@PreDestroy
public void delete() {
String path = System.getProperty("user.dir") + File.separator + "klogs";
System.out.println(path);
FileUtil.del(path);
}
}
使用@Component注解,将这个类注入bean,能被扫描到。
@PreDestroy注解注释在方法上用作回调通知,以表示实例正在被容器移除。带有PreDestroy注释的方法通常用于释放它一直持有的资源。 Java @PreDestroy 注解的使用
也就是说,每次销毁实例的时候,就会自动执行被标记的方法,也就是delete()这个方法。
然后可以看到项目里的文件夹已经被删除了,大功告成!
要注意的一点是这个配置类就不要提交到生产环境了,哈哈