zoukankan      html  css  js  c++  java
  • 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.结果

  • 相关阅读:
    LA 6621 /ZOJ 3736 Pocket Cube 打表+暴力
    UVA 10273
    UVA 10158 并查集的经典应用
    CodeForces 382B 数学推导
    UVA 10806 最小费用最大流
    UVA 10330 最大流
    图论:匹配与覆盖+独立集 团与支配集
    sdut oj 操作系统实验--SSTF磁盘调度算法【操作系统算法】
    【转载】单调队列学习
    poj 3006 Dirichlet's Theorem on Arithmetic Progressions【素数问题】
  • 原文地址:https://www.cnblogs.com/imguang/p/5639797.html
Copyright © 2011-2022 走看看