log4j(二)將日誌寫入數據庫

           大家知道,有時候日誌會記錄一些很重要的信息,而這些信息保存在日誌文件中我們很難進行有規律的查看和數據分析,這些信息的流失是損失重大的。

       因而,我們需要將一些必要的信息寫入數據庫。

       在寫入之前,我們先分析一下如何將亂糟糟的日誌信息,分類寫入:

       (1)首先,我們先把找到一些規律,也就是分析出字段及字段值;

       (2)之後把這些字段用一個不同於日誌信息中的比較特殊的符號隔開,如@@或$$這類符號。

         然後我們就可以寫入數據庫了:

         

import java.io.File;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import com.datuu.search.common.vo.SearchResultVO;

/**
 * 讀取配置文件-txt格式
 * @author Y
 *
 */

public class ReadFile {
	 public static void readTxtFile(String filePath) {
		   List<SearchResultVO> infoBeanList = new ArrayList();
	       SearchResultVO infoBean=new SearchResultVO();
	       try {
	           String encoding = "utf-8";
	           File file = new File(filePath);
	           if (file.isFile() && file.exists()){ //判斷文件是否存在
	               InputStreamReader read = new InputStreamReader(
	                       new FileInputStream(file), encoding);//考慮到編碼格式
	               BufferedReader bufferedReader = new BufferedReader(read);
	               String lineTxt = null;
	               ModiautoParserDao operationDB=new ModiautoParserDao();
	               while ((lineTxt = bufferedReader.readLine()) != null) {
	                   String[] s=lineTxt.split("@@");
	                   infoBean.setProvince(s[1].toString());
	                   infoBean.setName(s[2].toString());
	                   infoBean.setUrl(s[3].toString());
	                   infoBean.setAddress(s[4].toString());
	                   infoBean.setTelephone(s[5].toString());
	                   infoBean.setRepairType(s[6].toString());
	                  
	                   operationDB.addRcorder(infoBean);
	                   System.out.println(lineTxt);
	               }
	               read.close();
	           } else {
	               System.out.println("找不到指定的文件");
	           }
	       } catch (Exception e) {
	           System.out.println("讀取文件內容出錯");
	           e.printStackTrace();
	       }
	    }
	 
	 	//主函數
	 	public static void main(String[] args) {
	       String filePath = "E:\\ring-not-search.TXT";  //配置文件路徑,把日誌文件改成.txt格式,再放入制定位置,如,我放在了E盤根目錄下
	       ReadFile readFile=new ReadFile();  
	       readFile.readTxtFile(filePath);
	    }
	}

        下面的是一些連接數據庫(mysql)的信息和表字段:

        

//數據庫操作類--添加數據
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.DriverManager;
import java.sql.SQLException;

import com.datuu.search.common.vo.SearchResultVO;

public class ModiautoParserDao {

	private Connection con = null;

	public void addRcorder(SearchResultVO infoBean) throws SQLException {
		try {
			// 加載MySql的驅動類
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			System.out.println("找不到驅動程序類 ,加載驅動失敗!");
			e.printStackTrace();
		}
		String url = "jdbc:mysql://localhost:3306/car?useUnicode=true&characterEncoding=utf-8";
		String user = "root";
		String password = "123456";
		Connection con = DriverManager.getConnection(url, user, password);

		String sql = "insert into t_car(province,name,logo,address,telephone,repairType)values(?,?,?,?,?,?)";

		PreparedStatement pstmt = con.prepareStatement(sql);
		pstmt.setString(1, infoBean.getProvince());
		pstmt.setString(2, infoBean.getName());
		pstmt.setString(3, infoBean.getUrl());
		pstmt.setString(4, infoBean.getAddress());
		pstmt.setString(5, infoBean.getTelephone());
		pstmt.setString(6, infoBean.getRepairType());
		
		pstmt.executeUpdate();
		if (pstmt!=null) {
			pstmt.close();
		}
		if(con!=null){
			con.close();
		}
	}
}

       好了,這樣我們就可以把劃分好的日誌信息寫入數據庫了。大家對照我的上篇博客先查看日誌文件,看看我的劃分字段的實例。

       接下來,就很簡單了~ 做你該做的數據分析吧!


   

發佈了145 篇原創文章 · 獲贊 37 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章