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文件中初始化


 <listener>

 <listener-class>web.md.listener.LogListener</listener-class>

 </listener>

今天为大家整理了部分学习教程与大家共享,每个人可以根据自己的需要来选择,需要的小伙伴可以+下学习资料分享裙 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);//每天执行一次

  }

}

如果喜欢请转发+关注

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容