基於springboot來實現對日誌文件內容的監控

引言

這幾天須要作一個需求,需求就是監控第三方運行程序的日誌,提取關鍵字並預警這個功能。那麼咱們若是用java去實現這個監控日誌的功能呢?java

用線程的方式來監控log日誌文件

咱們首先要了解如下這三個類linux

一、Tailer類面試

Tailer類的主要做用是採用線程的方式去監控日誌文件的內容,簡單的理解就是文件內容的跟隨器,當文件內容發生變化時它就能捕獲到新增內容的信息,能夠理解爲咱們在linux服務器中經常使用的「tail -f」命令。spring

二、TailerListener類springboot

TailerListener類是一個接口類,由TailerListenerAdapter類去實現這個類。本文來源於公衆號:【Java學習提高】 專一於Java領域技術分享,Java知識體系學習、分享面試經驗,讓咱們結伴而行,共同成長!​服務器

三、TailerListenerAdapter類ide

TailerListenerAdapter類能夠捕獲到日誌新增長的內容,咱們的業務代碼會寫在這裏進行相關邏輯處理。學習

下面咱們用例子來講明一下,本實例是基於springboot實現的。spa

yml文件配置:.net

# 監控日誌的全路徑
logPath: D:/dd.log
# 監控日誌時間間隔
sleepInterval: 1000

java代碼:

@Component
public class SmsStarted implements ApplicationRunner {
 
 protected final static Logger log = LoggerFactory.getLogger(ServletContextAware.class);

 @Value("${logPath}")
 private String logPath;
 @Value("${sleepInterval}")
 private String sleepInterval;

 @Autowired
 private ISmsInfoService smsInfoService;

 @Override
 public void run(ApplicationArguments args) throws Exception {
   TailerListener listener = new TailerListenerAdapter() {
     @Override
     public void handle(String line) {
       try {
         log.info("日誌新增的內容爲:" + line);
       } catch (Exception ex) {
         log.error("發生異常:" + ex.getMessage());
       }

     }
   };
   Tailer tailer = new Tailer(new File(logPath), listener, Integer.valueOf(sleepInterval), true);
   tailer.run();
 }
}

運行結果以下圖所示:

基於springboot來實現對日誌文件內容的監控

上面就是咱們經過java來實現對日誌文件的內容監控,咱們能夠在handle()方法裏面作咱們業務邏輯上的處理就能夠了

原創聲明:本文爲【Java學習提高】原創博文,轉載請註明出處。

本文來源於公衆號:【Java學習提高】 專一於Java領域技術分享,Java知識體系學習、分享面試經驗,讓咱們結伴而行,共同成長

相關文章
相關標籤/搜索