1.在springboot启动类的同级或者下一级创建一个监听器配置类实现(所需)监听器接口
@WebListener public class LogListener implements ServletContextListener {}
2.重写初始化和销毁方法
private final static Logger LOGGER = LoggerFactory.getLogger(LogListener.class); @Override public void contextInitialized(ServletContextEvent sce) { LOGGER.info("初始化方法"); // 1.获取/var/log中的日志文件夹,判断是否存在,如果不存在则直接返回 File file = new File("/var/log"); if (file == null)return; // 获取当前日期字符串 DateTimeFormatter dtf =DateTimeFormatter.ofPattern("yyyy-MM-dd"); String currentDateString = dtf.format(LocalDateTime.now()); // /var/log下日志文件列表,循环判断文件是否包含日期字符串,不包含则删除 File[] files = file.listFiles(); for (File f : files){ String name = f.getName(); if (!name.contains(currentDateString))f.delete(); } } @Override public void contextDestroyed(ServletContextEvent sce) { LOGGER.info("销毁方法"); }
案例中是将除了当天的日志信息之外全部删除
3.在springboot启动类中加入@ServletComponentScan注解
@SpringBootApplication // 扫描web的注解如webServlet,WebFilter,WebListener @ServletComponentScan public class HqyjSpringbootApplication { public static void main(String[] args) { SpringApplication.run(HqyjSpringbootApplication.class, args); } }
监听器大致可以分为三类:
1)监听 Session、request、context 的创建于销毁,分别为
HttpSessionLister、ServletContextListener、ServletRequestListener
2)监听对象属性变化的有:ServletRequestAttributeListener、
HttpSessionAttributeLister、ServletContextAttributeListener、
3)监听Session 内的对象,分别为HttpSessionBindingListener 和 HttpSessionActivationListener。这两个 Listener 监听的是Session 内的对象,而非 Session 本身