引言
這幾天須要作一個需求,需求就是監控第三方運行程序的日誌,提取關鍵字並預警這個功能。那麼咱們若是用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();
}
}
運行結果以下圖所示:
上面就是咱們經過java來實現對日誌文件的內容監控,咱們能夠在handle()方法裏面作咱們業務邏輯上的處理就能夠了
原創聲明:本文爲【Java學習提高】原創博文,轉載請註明出處。
本文來源於公衆號:【Java學習提高】 專一於Java領域技術分享,Java知識體系學習、分享面試經驗,讓咱們結伴而行,共同成長