Java基础-- java类写入日志和定时删除日志

今天讲一下java类写入日志和定时删除日志

一、写入日志的工具类

LogUtil.java

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;


/**

 *

 *@author yang

 *@类功能说明:创建日志的工具类

 *@修改日期:2015-11-3 下午05:02:41

 *@修改说明:

 *@创建时间:2015-11-3 下午05:02:41

 *@版本:V1.0

 */

public class LogUtil {

  private String pathurl  =UrlInfo.GLOBALS_PATH+"/mdlog/mdWeb/";//另一个类中public static String GLOBALS_PATH="";     //设置日志的全局变量

  private String time   =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());

  private String daytime  =new SimpleDateFormat("yyyyMMdd").format(new Date());

  //创建字符文件流

  private FileWriter   fw=null;

  //创建字符缓冲流

  private BufferedWriter bw=null;

  /**

   *

   * @方法功能说明: 写文件的工具类

   * @修改者名字:yang

   * @修改日期 : 2015-11-4 

   * @参数: @param message  

   */

  public void info(String message){

    String os=System.getProperty("os.name");

    try {

/**

 * 判断操作系统名称是windows

 */

      if(os.startsWith("Windows")){

        try {

//判断是否有C D E盘

          if(new File(UrlInfo.PATH_CDEF_D).isDirectory()){

            UrlInfo.GLOBALS_PATH=UrlInfo.PATH_CDEF_D;

          }else if(new File(UrlInfo.PATH_CDEF_E).isDirectory()){

            UrlInfo.GLOBALS_PATH=UrlInfo.PATH_CDEF_E;

          }else if(new File(UrlInfo.PATH_CDEF_C).isDirectory()){

            UrlInfo.GLOBALS_PATH=UrlInfo.PATH_CDEF_C;

          }

          File fi=new File(pathurl);

//判断mdlog目录是否存在

          File fl=new File(UrlInfo.GLOBALS_PATH+"/mdlog/");

          if(!fl.isDirectory()){

            fl.mkdir();

          }

//判断文件夹是否存在

          if(!fi.isDirectory()){

//如果不存在,那么创建一个文件夹

            fi.mkdir();

          }

//true代表在原有基础上进行添加txt内容

          this.fw=new FileWriter(pathurl+daytime+".log",true);

          this.bw=new BufferedWriter(this.fw);

//写入信息内容

          this.bw.write(time+":"+message+"\r\n");

//不用编码,只要统一了编码GBK那么就行

        } catch (IOException e) {

          this.bw.write("write daily error:"+"\r\n"+e.getMessage());

        }finally{

          this.bw.close();

          this.fw.close();

        }

      }

/**

 * 判断操作系统是linux系统

 */

      else{

//设置linux下的全局变量

        UrlInfo.GLOBALS_PATH="/usr/";

        try {

          File fi=new File(pathurl);

//判断文件夹是否存在

          if(!fi.isDirectory()){

//如果不存在,那么创建一个文件夹

            fi.mkdir();

          }

//true代表在原有基础上进行添加txt内容20151104.log

          this.fw=new FileWriter(pathurl+daytime+".log",true);

          this.bw=new BufferedWriter(this.fw);

//写入信息内容

          this.bw.write(time+":"+message+"\r\n");

// this.bw.write(time+":"+new String(b,UrlInfo.GLOBALS_UNICODE)+"\r\n");

        } catch (IOException e) {

          e.printStackTrace();

          this.bw.write("write daily error:"+"\r\n"+e.getMessage());

        }finally{

          this.bw.close();

          this.fw.close();

        }

      }

    } catch (Exception e) {

      e.printStackTrace();

    }

  }


  /**

   *

   * @方法功能说明: 获取当前月往前推一个月的日期

   * @修改者名字:yang

   * @修改日期 : 2015-11-8 

   * @修改内容 :

   * @参数:   int 多少月  

   * @return String

   * @异常抛出:

   */

  public int getForwardDate(int what){

    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

    Calendar cl = Calendar.getInstance();

    cl.add(Calendar.MONTH, what);//从现在算,之前month个月

    Date dateFrom = cl.getTime();

    return Integer.parseInt(sdf.format(dateFrom));

  }

}



二、定时删除一个月前的日志

LogListener.java

注:

1、监听器需要在web.xml文件中初始化


 

 web.md.listener.LogListener

 

今天为大家整理了部分学习教程与大家共享,每个人可以根据自己的需要来选择,需要的小伙伴可以+下学习资料分享裙 943加上064最后是644数字连起来就是了。

2、UrlInfo.java参考


package com.dg.web.form.common;


public class UrlInfo {

/**2016-03-01新增小店服务器的ip地址*/

//

public static String SERVICE_IP_40="*.40";

public static String SERVICE_IP_41="*.41";

public static String SERVICE_IP_73="*.73";

public static String SERVICE_IP_78="*.78";

public static String SERVICE_IP_79="*.79";

public static String NAME_SMALL_STORE="小店服务器";

/**

*2016-02-19增加条件 

*/

public static String COMMON_NAME_GIFT="赠品"; //为赠品管理添加条件

public static int COMMON_NAME_NUM=8; //赠品券活动的sqlx是8

public static String URL_DATANAME_DG="dg";        //mysql数据库名--> dg

public static String URL_DATANAME_ORDER="order";     //mysql数据库名--> order

public static String URL_DATANAME_IPADD="127.0.0.1";   //链接数据库,服务器本机默认ip地址127.0.0.1

public static String URL_TABLENAME_MD_QUERY="md_query";  //门店信息表(包含所有门店信息)

//mysql dg数据库 表名称

public static String TABLENAME_XSLSB="xslsb";       //销售流水表

public static String TABLENAME_XSLSB_BAK="xslsb_bak";   //销售流水备份表

public static String TABLENAME_ZFFSB="zffsb";       //支付方式表

public static String TABLENAME_ZFFSB_BAK="zffsb_bak";   //支付方式备份表

public static String TABLENAME_YHQFQB="yhqfqb";   //优惠券发券表

public static String TABLENAME_YHQFQB_BAK="yhqfqb_bak";   //优惠券发券备份表

public static String TABLENAME_YHQDQB="yhqdqb";   //优惠券兑券表

public static String TABLENAME_YHQDQB_BAK="yhqdqb_bak";  //优惠券兑券备份表

public static String TABLENAME_YHHDB="yhhdb";       //优惠活动表

public static String TABLENAME_FQGZB="fqgzb";       //发券规则表

public static String TABLENAME_DQGZB="dqgzb";       //兑券规则表

public static String TABLENAME_FQSJB="fqsjb";       //发券时间表

public static String TABLENAME_DQSJB="dqsjb";       //兑券时间表

public static String TABLENAME_FQSPB="fqspb";       //发券商品表

public static String TABLENAME_DQSPB="dqspb";       //兑券商品表

public static String TABLENAME_XTCSB="xtcsb";           //系统参数表

public static String TABLENAME_MUSIC="t_md_query_music";   //获取到门店的ip地址

public static String VARIABLE_NAME_HAND="发券";       //发券

public static String VARIABLE_NAME_HAND_OUT="剔除";     //剔除发券或者兑券

public static String VARIABLE_NAME_EXCHANGE="兑券";     //兑券

public static int XPH_LENGTH=2;               //小票号的长度为6时,起始值是2

public static String ZFFSDM="4";               //支付方式代码为4代表优惠券支付

public static int SQLX=6;                      //收券类型为6代表云收券,

public static int SQLX2=7;                  

public static int SQLX3=0;                   

public static int SQLX4=9;                   

public static int FQLX=6;                   //代表有发券规则

public static int FQLX2=0;                  //代表有发券规则

public static int FQLX3=7;                  //代表有发券规则

public static int FQLX4=9;                  //代表有发券规则

/**

* 用于判断sqlx,fqlx

*/

public static int FQLX5=5;      //代表不发券

public static int FQLX9=999;     //代表不发券

public static int SQLX5=5;

public static int SQLX9=999;

/**

*登录 账号和密码

*/

public static String UER="dg";

public static String UER1="001";

public static String UER2="002";

public static String UER3="003";

public static String UER4="004";

public static String PASSWORD="123";

public static String PASSWORD1="123";

public static String PASSWORD2="123";

public static String PASSWORD3="123";

public static String PASSWORD4="123";

/**

* 设置选择的活动名称个数

*/

public static int COUNT_HDBH=3;

/**

* 活动名称

*/

public static String NAME_HDMC="重要";  //为了显示重要的活动

/**

* 规定jsp填写参数mdh时,如果查询备份服务器10.2.2.71那么需要规定mdh以小写或者大写B开头

*/

public static String STRING_MDH_B="B"; 

public static String STRING_MDH_b="b"; 

/**

* 总部查询时,是否需要访问备份服务器的标志

*/

public static String MASTER_TIPS_TRUE ="999";  //如果是999代表需要访问备份服务器

public static String MASTER_TIPS_FALSE="888";  //如果是888代表不需要访问备份服务器

/**

* 门店查询时,是否需要访问备份服务器的标志

*/

public static String MD_TIPS_TRUE ="1"; //如果是1代表需要访问备份服务器

public static String MD_TIPS_FALSE="0"; //如果是0代表需要访问备份服务器

/**

* 门店不通时,需要查询备份服务器

*/

public static String BAK_IP="10.2.2.71";  //备份数据服务器ip

// public static String BAK_IP="192.168.1.122";      //备份数据服务器ip

/**

*路径的全局变量

*/

public static String GLOBALS_PATH="";     //设置日志的全局变量

public static String GLOBAL_MP3_PATH=""; //设置mp3门店存放的全局变量

/**

* 用于判断是否有“请选择”字样的变量

*/

public static String GLOBALS_JADGMENT="请选择";

/**

* 2015-11-26

* 提示查询小票商品最综是否符合发券信息

*/

public static String RESULT_JSP_TRUE="符合(本地门店服务器【已生成】优惠券!)";  //显示符合发券,备注本地服务器已经发券

public static String RESULT_JSP_FALSE="符合(本地门店服务器【未生成】优惠券,【需要总部补发】!)";  //显示符合发券,备注本地服务器未发券

/**

* 2015-11-30

* 固定时间删除日志

*/

public static int TIME_DELETE_HOUR=02;   //时

public static int TIME_DELETE_MINUTES=00;  //分

public static int TIME_DELETE_SECOND=00;  //秒

/**

* 2015-12-10

* 固定的下发时间

*/

public static int TIME_HANDOUT_HOUR=2;   //时

public static int TIME_HANDOUT_MINUTES=0;  //分

public static int TIME_HANDOUT_SECOND=0;  //秒

/**

* 2016-01-06

* 固定的删除空文件和不存在的文件的时间

*/

public static int TIME_DELETE_FILE_HOUR=1;   //时

public static int TIME_DELELTE_FILE_MINUTES=0;  //分

public static int TIME_DELETE_FILE_SECOND=0;  //秒

/**

* xml和mp3下发相关

*/

public static String URL_MP3XML_MASTER="D://play/";       //.40上的mp3和xml文件路径默认是D盘

public static String URL_MP3XML_LINUX_OR_WINDOWS    ="";               //存放门店返回的文件

public static String XML_PLAYLIST_NAME="PlayList.xml"; //监听器传递的下发xml文件名称

public static String XML_COMMAND_NAME="command"; //监听器传递的命令参数名称

public static String XML_EXECUTE_RESULT="yes";        //.40的servlet接收yes的命令

/**

* 2015-12-11

* 新增参数:判断是否连接门店数据库成功

*/

public static String CONECT_MD_RESULT="链接失败";

public static String MD_TO_MASTER_SUCESS="1";  //接收mp3后给.40返回的成功标记

public static String MD_TO_MASTER_ERROR="0";  //接收xml文件或者mp3后给.40返回的失败标记

/**

* 保存日志已经xml和mp3文件的磁盘路径

*/

public static String PATH_CDEF_C ="C:/"; //windows下C盘

public static String PATH_CDEF_D="D:/";//windows下D盘

public static String PATH_CDEF_E ="E:/";//windows下E盘

/**

* 2016-01-21 优惠券发券表中的sftd目前为1时,表示为通兑码

*/

public static int PARAM_SFTD=1;

}

------LogListener 监听----

import java.io.File;

import java.util.Calendar;

import java.util.Date;

import java.util.Timer;

import java.util.TimerTask;


import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;


import web.md.util.LogUtil;

public class LogListener implements ServletContextListener{

  private LogUtil logger=new LogUtil();


  public void contextDestroyed(ServletContextEvent sce) {

  }

  public void contextInitialized(ServletContextEvent sce) {

    Timer timer=new Timer();

    Calendar calendar = Calendar.getInstance();

    calendar.set(Calendar.HOUR_OF_DAY, UrlInfo.TIME_DELETE_HOUR); // 控制时 

    calendar.set(Calendar.MINUTE, UrlInfo.TIME_DELETE_MINUTES);  // 控制分 

    calendar.set(Calendar.SECOND, UrlInfo.TIME_DELETE_SECOND);  // 控制秒 

    Date time = calendar.getTime(); // 得出执行任务的时间,此处为今天的02:00:00 

//获取时间

    timer.scheduleAtFixedRate(new TimerTask() {

      int firstDate=0;

      int lastDate =0;

      @Override

      public void run() {

        logger.info("---【监听器监听到开始删除日志文件】---");

//获取日志文件夹的路径

        String logPath=UrlInfo.GLOBALS_PATH+"/mdlog/mdWeb/";

/**

 * 定时删除任务

 */

//获取当前日期往前推一个月的开始时间和结束时间

        firstDate=logger.getForwardDate(-2);

        lastDate =logger.getForwardDate(-1);

//首先进入目录去匹配是否有该文件夹

        if(new File(logPath).isDirectory()){

//获取文件夹中的文件集合

          File []logs=new File(logPath).listFiles();

//遍历集合

          for(int i=0;i=firstDate&&logInt<=lastDate){

              logger.info("----监听器中,开始删除往前一个月的日志文件:"+log);

//执行删除方法

              log.delete();

            }

          }

        }

        logger.info("---【监听器监听到删除日志文件结束】---");

      }

    }, time, 24*60*60*1000);//每天执行一次

  }

}

=firstDate&&logInt<=lastDate){

              logger.info("----监听器中,开始删除往前一个月的日志文件:"+log);

//执行删除方法

              log.delete();

            }

          }

        }

        logger.info("---【监听器监听到删除日志文件结束】---");

      }

    }, time, 24*60*60*1000);//每天执行一次

  }

}

如果喜欢请转发+关注

你可能感兴趣的:(Java基础-- java类写入日志和定时删除日志)