Java基礎(chǔ)-- 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

?*@類功能說明:創(chuàng)建日志的工具類

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

?*@修改說明:

?*@創(chuàng)建時間:2015-11-3 下午05:02:41

?*@版本:V1.0

?*/

public class LogUtil {

??private String pathurl??=UrlInfo.GLOBALS_PATH+"/mdlog/mdWeb/";//另一個類中public?static String GLOBALS_PATH="";?????//設(shè)置日志的全局變量

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

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

??//創(chuàng)建字符文件流

??private FileWriter???fw=null;

??//創(chuàng)建字符緩沖流

??private BufferedWriter bw=null;

??/**

???*

???* @方法功能說明: 寫文件的工具類

???* @修改者名字:yang

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

???* @參數(shù): @param message??

???*/

??public void info(String message){

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

????try {

/**

?* 判斷操作系統(tǒng)名稱是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()){

//如果不存在褐桌,那么創(chuàng)建一個文件夾

????????????fi.mkdir();

??????????}

//true代表在原有基礎(chǔ)上進行添加txt內(nèi)容

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

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

//寫入信息內(nèi)容

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

//不用編碼,只要統(tǒng)一了編碼GBK那么就行

????????} catch (IOException e) {

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

????????}finally{

??????????this.bw.close();

??????????this.fw.close();

????????}

??????}

/**

?* 判斷操作系統(tǒng)是linux系統(tǒng)

?*/

??????else{

//設(shè)置linux下的全局變量

????????UrlInfo.GLOBALS_PATH="/usr/";

????????try {

??????????File fi=new File(pathurl);

//判斷文件夾是否存在

??????????if(!fi.isDirectory()){

//如果不存在,那么創(chuàng)建一個文件夾

????????????fi.mkdir();

??????????}

//true代表在原有基礎(chǔ)上進行添加txt內(nèi)容20151104.log

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

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

//寫入信息內(nèi)容

??????????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();

????}

??}


??/**

???*

???* @方法功能說明: 獲取當(dāng)前月往前推一個月的日期

???* @修改者名字:yang

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

???* @修改內(nèi)容 :

???* @參數(shù):???int 多少月??

???* @return String

???* @異常拋出:

???*/

??public?int getForwardDate(int what){

????SimpleDateFormat?sdf = new SimpleDateFormat("yyyyMMdd");

????Calendar cl = Calendar.getInstance();

????cl.add(Calendar.MONTH, what);//從現(xiàn)在算,之前month個月

????Date dateFrom = cl.getTime();

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

??}

}



二、定時刪除一個月前的日志

LogListener.java

注:

1屎债、監(jiān)聽器需要在web.xml文件中初始化


?<listener>

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

?</listener>

今天為大家整理了部分學(xué)習(xí)教程與大家共享,每個人可以根據(jù)自己的需要來選擇垢油,需要的小伙伴可以+下學(xué)習(xí)資料分享裙 943加上064最后是644數(shù)字連起來就是了盆驹。

2、UrlInfo.java參考


package com.dg.web.form.common;


public class UrlInfo {

/**2016-03-01新增小店服務(wù)器的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="小店服務(wù)器";

/**

*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數(shù)據(jù)庫名--> dg

public static String URL_DATANAME_ORDER="order";?????//mysql數(shù)據(jù)庫名--> order

public static String URL_DATANAME_IPADD="127.0.0.1";???//鏈接數(shù)據(jù)庫滩愁,服務(wù)器本機默認ip地址127.0.0.1

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

//mysql dg數(shù)據(jù)庫 表名稱

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"; ??//優(yōu)惠券發(fā)券表

public static String TABLENAME_YHQFQB_BAK="yhqfqb_bak"; ??//優(yōu)惠券發(fā)券備份表

public static String TABLENAME_YHQDQB="yhqdqb"; ??//優(yōu)惠券兌券表

public static String TABLENAME_YHQDQB_BAK="yhqdqb_bak";??//優(yōu)惠券兌券備份表

public static String TABLENAME_YHHDB="yhhdb";???????//優(yōu)惠活動表

public static String TABLENAME_FQGZB="fqgzb";???????//發(fā)券規(guī)則表

public static String TABLENAME_DQGZB="dqgzb";???????//兌券規(guī)則表

public static String TABLENAME_FQSJB="fqsjb";???????//發(fā)券時間表

public static String TABLENAME_DQSJB="dqsjb";???????//兌券時間表

public static String TABLENAME_FQSPB="fqspb";???????//發(fā)券商品表

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

public static String TABLENAME_XTCSB="xtcsb";??????? ?? //系統(tǒng)參數(shù)表

public static String TABLENAME_MUSIC="t_md_query_music";???//獲取到門店的ip地址

public static String VARIABLE_NAME_HAND="發(fā)券";???????//發(fā)券

public static String VARIABLE_NAME_HAND_OUT="剔除";?????//剔除發(fā)券或者兌券

public static String VARIABLE_NAME_EXCHANGE="兌券";?????//兌券

public static int XPH_LENGTH=2;???????????????//小票號的長度為6時躯喇,起始值是2

public static String ZFFSDM="4";???????????????//支付方式代碼為4代表優(yōu)惠券支付

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;???????????????????//代表有發(fā)券規(guī)則

public static int FQLX2=0;??????????????????//代表有發(fā)券規(guī)則

public static int FQLX3=7;??????????????????//代表有發(fā)券規(guī)則

public static int FQLX4=9;??????????????????//代表有發(fā)券規(guī)則

/**

* 用于判斷sqlx惊楼,fqlx

*/

public static int FQLX5=5;??????//代表不發(fā)券

public static int FQLX9=999;?????//代表不發(fā)券

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";

/**

* 設(shè)置選擇的活動名稱個數(shù)

*/

public static int COUNT_HDBH=3;

/**

* 活動名稱

*/

public static String NAME_HDMC="重要";??//為了顯示重要的活動

/**

* 規(guī)定jsp填寫參數(shù)mdh時玖瘸,如果查詢備份服務(wù)器10.2.2.71那么需要規(guī)定mdh以小寫或者大寫B(tài)開頭

*/

public static String STRING_MDH_B="B";?

public static String STRING_MDH_b="b";?

/**

* 總部查詢時秸讹,是否需要訪問備份服務(wù)器的標(biāo)志

*/

public static String MASTER_TIPS_TRUE ="999";??//如果是999代表需要訪問備份服務(wù)器

public static String MASTER_TIPS_FALSE="888";??//如果是888代表不需要訪問備份服務(wù)器

/**

* 門店查詢時檀咙,是否需要訪問備份服務(wù)器的標(biāo)志

*/

public static String MD_TIPS_TRUE ="1";?//如果是1代表需要訪問備份服務(wù)器

public static String MD_TIPS_FALSE="0";?//如果是0代表需要訪問備份服務(wù)器

/**

* 門店不通時,需要查詢備份服務(wù)器

*/

public static String BAK_IP="10.2.2.71";??//備份數(shù)據(jù)服務(wù)器ip

// public static String BAK_IP="192.168.1.122";??????//備份數(shù)據(jù)服務(wù)器ip

/**

*路徑的全局變量

*/

public?static String GLOBALS_PATH="";?????//設(shè)置日志的全局變量

public static String GLOBAL_MP3_PATH="";?//設(shè)置mp3門店存放的全局變量

/**

* 用于判斷是否有“請選擇”字樣的變量

*/

public static String GLOBALS_JADGMENT="請選擇";

/**

* 2015-11-26

* 提示查詢小票商品最綜是否符合發(fā)券信息

*/

public static String RESULT_JSP_TRUE="符合(本地門店服務(wù)器【已生成】優(yōu)惠券!)";??//顯示符合發(fā)券璃诀,備注本地服務(wù)器已經(jīng)發(fā)券

public static String RESULT_JSP_FALSE="符合(本地門店服務(wù)器【未生成】優(yōu)惠券,【需要總部補發(fā)】!)";??//顯示符合發(fā)券弧可,備注本地服務(wù)器未發(fā)券

/**

* 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

* 固定的下發(fā)時間

*/

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下發(fā)相關(guān)

*/

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"; //監(jiān)聽器傳遞的下發(fā)xml文件名稱

public static String XML_COMMAND_NAME="command"; //監(jiān)聽器傳遞的命令參數(shù)名稱

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

/**

* 2015-12-11

* 新增參數(shù):判斷是否連接門店數(shù)據(jù)庫成功

*/

public static String CONECT_MD_RESULT="鏈接失敗";

public static String MD_TO_MASTER_SUCESS="1";??//接收mp3后給.40返回的成功標(biāo)記

public static String MD_TO_MASTER_ERROR="0";??//接收xml文件或者mp3后給.40返回的失敗標(biāo)記

/**

* 保存日志已經(jīng)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 優(yōu)惠券發(fā)券表中的sftd目前為1時,表示為通兌碼

*/

public static int PARAM_SFTD=1;

}

------LogListener 監(jiān)聽----

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(); // 得出執(zhí)行任務(wù)的時間,此處為今天的02:00:00?

//獲取時間

????timer.scheduleAtFixedRate(new TimerTask() {

??????int firstDate=0;

??????int lastDate =0;

??????@Override

??????public void run() {

????????logger.info("---【監(jiān)聽器監(jiān)聽到開始刪除日志文件】---");

//獲取日志文件夾的路徑

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

/**

?* 定時刪除任務(wù)

?*/

//獲取當(dāng)前日期往前推一個月的開始時間和結(jié)束時間

????????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("----監(jiān)聽器中劣欢,開始刪除往前一個月的日志文件:"+log);

//執(zhí)行刪除方法

??????????????log.delete();

????????????}

??????????}

????????}

????????logger.info("---【監(jiān)聽器監(jiān)聽到刪除日志文件結(jié)束】---");

??????}

????}, time, 24*60*60*1000);//每天執(zhí)行一次

??}

}

=firstDate&&logInt<=lastDate){

??????????????logger.info("----監(jiān)聽器中棕诵,開始刪除往前一個月的日志文件:"+log);

//執(zhí)行刪除方法

??????????????log.delete();

????????????}

??????????}

????????}

????????logger.info("---【監(jiān)聽器監(jiān)聽到刪除日志文件結(jié)束】---");

??????}

????}, time, 24*60*60*1000);//每天執(zhí)行一次

??}

}

如果喜歡請轉(zhuǎn)發(fā)+關(guān)注

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市凿将,隨后出現(xiàn)的幾起案子校套,更是在濱河造成了極大的恐慌,老刑警劉巖牧抵,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笛匙,死亡現(xiàn)場離奇詭異侨把,居然都是意外死亡,警方通過查閱死者的電腦和手機妹孙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門秋柄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蠢正,你說我怎么就攤上這事骇笔。” “怎么了嚣崭?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵笨触,是天一觀的道長。 經(jīng)常有香客問我有鹿,道長旭旭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任葱跋,我火速辦了婚禮持寄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘娱俺。我一直安慰自己稍味,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布荠卷。 她就那樣靜靜地躺著模庐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪油宜。 梳的紋絲不亂的頭發(fā)上掂碱,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機與錄音慎冤,去河邊找鬼疼燥。 笑死,一個胖子當(dāng)著我的面吹牛蚁堤,可吹牛的內(nèi)容都是我干的醉者。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼披诗,長吁一口氣:“原來是場噩夢啊……” “哼撬即!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起呈队,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤剥槐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后宪摧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粒竖,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡迈喉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了温圆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挨摸。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖岁歉,靈堂內(nèi)的尸體忽然破棺而出得运,到底是詐尸還是另有隱情,我是刑警寧澤锅移,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布熔掺,位于F島的核電站,受9級特大地震影響非剃,放射性物質(zhì)發(fā)生泄漏置逻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一备绽、第九天 我趴在偏房一處隱蔽的房頂上張望券坞。 院中可真熱鬧,春花似錦肺素、人聲如沸恨锚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽猴伶。三九已至,卻和暖如春塌西,著一層夾襖步出監(jiān)牢的瞬間他挎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工捡需, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留办桨,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓栖忠,卻偏偏與公主長得像崔挖,于是被迫代替她去往敵國和親贸街。 傳聞我的和親對象是個殘疾皇子庵寞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容