日誌清理小工具的開發

2021-08-28 15:05:49 字數 3739 閱讀 6535

為了方便配置,日誌的原有路徑和備份路徑等配置我們定義在propies檔案中,然後通過spring的註解value來獲取

#日誌清理配置

original.log.path=

/data/logs/sspapi-job

log.back.path=

/data/logs/sspapi-job/back

back.log.date=

30delete

.log.date=

35log.name.prefix=test_log

@value

("$"

)private string originallogpath;

@value

("$"

)private string logbackpath;

@value

("$"

)private string lognameprefix;

@value

("$"

)private int backlogdate;

@value

("$"

)private int deletelogdate;

由於配置有錯誤可能,以及目錄存在的實際情況,為了保證程式的健壯性,必要的校驗是必不可少的

//判斷刪除和備份日期是否配置正確

if(backlogdate>=deletelogdate||backlogdate<

1||deletelogdate<1)

//判斷原有日誌目錄是否存在

file originallogdir =

newfile

(originallogpath);if

(!originallogdir.

isdirectory()

)//若備份目錄不存在,建立

file logbackdir =

newfile

(logbackpath);if

(logbackdir.

isfile()

)if(!logbackdir.

exists()

)}

日誌刪除和備份策略具體體現為,根據日誌的檔名中包含的時間資訊,獲得與當前時間的差值,與配置檔案中的備份時間和刪除時間對比,做不同處理。具體處理邏輯需根據需求和檔名格式有所不同,下面是乙個簡單的demo

public boolean execute

(string param)

//判斷原有日誌目錄是否存在

file originallogdir =

newfile

(originallogpath);if

(!originallogdir.

isdirectory()

)//若備份目錄不存在,建立

file logbackdir =

newfile

(logbackpath);if

(logbackdir.

isfile()

)if(!logbackdir.

exists()

)}//遍歷原有日誌路徑下的檔案,將符合格式的進行備份

file[

] originallogs = originallogdir.

listfiles()

;for

(file logfile:originallogs)

}//遍歷備份路徑下的檔案,進行刪除

file[

] backfiles = logbackdir.

listfiles()

;for

(file logfile:backfiles)

}return

true;}

/** * 處理單個檔案

* @param logfile 需處理的檔案

* @param operationtype 操作型別,1為移動備份,2為刪除

*/private

void

dealfile

(file logfile,int operationtype)

//獲取當前時間與檔名中的時間的天數差值

int days =

((int)

(new

date()

.gettime()

/1000)-

(int)

(filedate.

gettime()

/1000))

/(60*

60*24)

;//比較檔案日期和當前日期,超過指定日期的移動到備份目錄if(

move_code

== operationtype)

}elseif(

delete_code

== operationtype)}}

/** * 取出檔名中代表日期的字段,轉換為日期格式

* @param filename

* @return

*/private date getdatestr

(string filename)

",filename)

;return

null;}

date filedate =

null

; ******dateformat sdf =

new******dateformat

(date_format);

trycatch

(parseexception e)

",filename);}

return filedate;

}

通常來說,日誌清理任務是通過定時任務來執行的,定時任務的有許多框架,spring-task,quartz等,這次我們已spring-task作為我們定時任務的載體,

只需在方法上加入註解

@scheduled(cron = 「0/30 * * * * ?」)

使用spring boot需只在spring的啟動類上加入註解@enablescheduling即可開啟定時任務

關於 cronexpression 表示式有至少 6 個(也可能是 7 個)由空格分隔的時間元素。

//感覺基本上是6個,7個好像沒成功過

字段 允許值 允許的特殊字元

秒 0-59 , - * /

分 0-59 , - * /

小時 0-23 , - * /

日期 1-31 , - * ? / l w c

月份 1-12 或者 jan-dec , - * /

星期 1-7 或者 sun-sat , - * ? / l c #

年(可選)留空, 1970-2099 , - * /

seconds:可出現,- * / 四個字元,有效範圍為0-59的整數

minutes:可出現,- * / 四個字元,有效範圍為0-59的整數

hours:可出現,- * / 四個字元,有效範圍為0-23的整數

dayofmonth:可出現,- * / ? l w c八個字元,有效範圍為0-31的整數

month:可出現,- * / 四個字元,有效範圍為1-12的整數或jan-dec

dayofweek:可出現,- * / ? l c #四個字元,有效範圍為1-7的整數或sun-sat兩個範圍。1表示星期天,2表示星期一, 依次類推

year:可出現,- * / 四個字元,有效範圍為1970-2023年

開發小工具

獲取上級方法的資訊 thread.currentthread getstacktrace 1 是你當前方法執行堆疊 thread.currentthread getstacktrace 2 就是上一級的方法堆疊 以此類推 param content return public static stri...

vs工程清理小工具

通常我們在傳輸vs工程的時候,有很多不必要的檔案可以清理,通常這些檔案占用的空間可能還比較大,遠超工程 檔案的大小,於是寫了這個小工具,方便清理工程,支援多個過程同時清理,拖拽到介面上即可。核心 如下 void cvsprojectcleanerdlg onbnclickedok else 開始逐個...

EAS開發小工具

系統選單 啟用系統選單快捷鍵 shift ctrl alt k 系統選單匯出 geninsert select from t bas sysmenuitem where 1 1 客戶化選單 客戶化選單匯出 geninsert select from t pm mainmenuitem where 1...