springboot+监听器(日志信息)

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 本身
经验分享 程序员 微信小程序 职场和发展