針對多個非 Maven 老舊應用系統,採用「應用系統 → 日誌服務 → Flume → MongoDB」架構,避免每個系統引入 20+ Jar 包。

src/main/java
└─ cn.sinobest.asj.log
├─ ISALog.java # 服務接口
├─ SALogImpl.java # 實現類,寫入 Flume
├─ exception
│ ├─ InvalidGradeException.java
│ └─ InvalidFormatExceptioin.java
└─ util
├─ ValidGrade.java # 枚舉:DEBUG/INFO/WARN/ERROR
└─ MessageTemplate.java # 消息模板
src/main/resources/log4j.properties
src/main/webapp/WEB-INF
├─ sun-jaxws.xml # JAX-WS 發布配置
└─ web.xml
pom.xml
public class LogFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) {
HttpServletRequest request = (HttpServletRequest) req;
// 組裝 JSON:IP、URI、參數、用戶等
String json = buildJson(request);
// 調用 WebService 客戶端發送
LogServiceClient.send(json);
chain.doFilter(req, res);
}
}
使用 wsimport 生成客戶端存根,放入 cn.sinobest.asj.log.wsimport 包。