程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 應用系統日志采集解決方案,日志采集解決方案

應用系統日志采集解決方案,日志采集解決方案

編輯:JAVA綜合教程

應用系統日志采集解決方案,日志采集解決方案


概述


基於Flume + MongoDB,對現有的多個應用系統進行日志采集。

特點

數據流圖


說明: 首先考慮的結構體系,是直接在應用系統中,將日志數據寫到Flume;但是現有的應用系統都是非Maven的,需要在每一個應用系統中添加20+個jar包。為避免這種情況,抽出了一層日志服務,開放webservice服務給應用系統調用,最終形成上述的體系。

日志存儲


1.需要解決的問題

1.1 借助Flume,寫日志到MongoDB

參考:Flume學習應用:Java寫日志數據到MongoDB - 外網參考:Flume學習應用:Java寫日志數據到MongoDB

1.2 發布webservice服務

參考:在web項目中發布jaxws - 外網參考:在web項目中發布jaxws

2.日志服務實現

一個簡單的web項目,對外發布一個webservice服務,實現寫日志到Flume。

2.1 文件結構

src/main/java
    |---- cn.sinobest.asj.log
              |---- ISALog.java # 日志服務接口
              |---- SALogImpl.java # 日志服務實現類
    |---- cn.sinobest.asj.log.exception
              |---- InvalidGradeException.java # 表示無效的日志等級
              |---- InvalidFormatExceptioin.java # 表示無效的消息格式(要求是JSON格式字符串)
    |---- cn.sinobest.asj.log.util
              |---- ValidGrade.java # 枚舉,所有有效的日志等級(DEBUG, INFO, WARN, ERROR)
              |---- MessageTemplate.java # 消息模板
src/main/resources
    |---- log4j.properties
src/main/webapp
    |---- WEB-INF
              |---- sun-jaxws.xml
              |---- web.xml
    |----  index.jsp # 這個可以忽略
pom.xml

 

2.2  文件內容

你可以直接從log-service拿到源代碼,並跳過這一節的內容。

應用系統群


1.需要考慮的問題

1.1 攔截

使用Filter可以實現攔截。

1.2 組織日志內容

視需求而定,當前僅對request中的部分信息進行了采集。

1.3 格式化

日志信息需要格式化為JSON字符串,才能正確的寫到MongoDB。

1.4 請求webservice服務

參考:基於wsimport生成代碼的客戶端 - 外網參考:基於wsimport生成代碼的客戶端

2. demo

2.1 文件結構圖

src
 |---- cn.sinobest.asj.log
           |----  LogFilter.java
 |---- cn.sinobest.asj.log.wsimport # 存放wsimport生成的代碼
           # 省略
basic
 |---- WEB-INF
           |---- web.xml

2.2 文件內容

測試


附錄


相關文章

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved