log4j1 插入mysql

作任務須要用到這樣的需求:

  1. 使用log4j 1.2進行日誌管理。
  2. 將日誌輸出到mysql中
  3. 系統數據庫表利用腳本每日生成一張,插入系統運行時特定的表中。

實現方法

  1. properties(放在項目根目錄中)
log4j.rootLogger=info, ServerDailyRollingFile, stdout ,logDB
    #這一個爲文件輸出,而且Daily
    log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.ServerDailyRollingFile.DatePattern='.'yyyy-MM-dd
    log4j.appender.ServerDailyRollingFile.File=D://logs/notify-subscription.log
    log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout
    log4j.appender.ServerDailyRollingFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n
    log4j.appender.ServerDailyRollingFile.Append=true
    #這一個是配置console輸出
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n
    #這一個爲配置mysql
    log4j.appender.logDB = org.apache.log4j.jdbc.JDBCAppender
    log4j.appender.logDB.layout = org.apache.log4j.PatternLayout
    log4j.appender.logDB.Driver = com.mysql.jdbc.Driver
    log4j.appender.logDB.URL = jdbc:mysql://127.0.0.1:3306/imooc
    log4j.appender.logDB.User = root
    log4j.appender.logDB.Password = root
    log4j.appender.logDB.Sql = INSERT INTO T_log4j(project_name,create_date,level,category,file_name,thread_name,line,all_category,message)values('Struts2','%d{yyyy-MM- ddHH:mm:ss}','%p','%c','%F','%t','%L','%l','%m')
  1. 代碼(其中要進行修改log4j.appender.logDB.Sql的配置值)
static Logger log = Logger.getLogger(Main.class);

    public static void main(String[] args) throws FileNotFoundException,
            IOException {

        String dailySqlString = "INSERT INTO T_log4j_"
                + GetNowDate()
                + "(project_name,create_date,level,category,file_name,thread_name,line,all_category,message)"
                + "values('Struts2','%d{yyyy-MM-ddHH:mm:ss}','%p','%c','%F','%t','%L','%l','%m')";
        
        Properties properties = new Properties();
        properties.load(new FileInputStream("log4j.properties"));
        properties.setProperty("log4j.appender.logDB.Sql", dailySqlString);

        PropertyConfigurator.configure(properties);
                //如下爲測試
        try {
            double a = 1 / 0;
        } catch (Exception e) {
            log.error(e);
        }
        }
    //其中GetNowDate用來獲取當前時間:
    public static String GetNowDate() {
        String temp_str = "";
        Date dt = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        temp_str = sdf.format(dt);
        return temp_str;
    }

3.結果
java

相關文章
相關標籤/搜索