springboot+监听器(日志信息)

本文介绍了如何在SpringBoot项目中创建一个监听器,实现在ServletContext初始化和销毁时清理过期日志。通过@WebListener注解的LogListener类,监听并删除除当日文件外的旧日志,以保持日志管理的高效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 本身

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值