现在的位置: 首页 > 操作系统 > 正文

Java类写入日志和定时删除日志

2020年02月12日 操作系统 ⁄ 共 4225字 ⁄ 字号 评论关闭

一、写入日志的工具类

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.logthis.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

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;@Overridepublic 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<logs.length;i++){//获取第i个文件File log=logs[i];//获取第i个文件的名称int logInt=Integer.parseInt(log.getName().substring(0,8));//判断是在一个月内if(logInt>=firstDate&&logInt<=lastDate){logger.info("----监听器中,开始删除往前一个月的日志文件:"+log);//执行删除方法log.delete();}}}logger.info("---【监听器监听到删除日志文件结束】---");}}, time, 24*60*60*1000);//每天执行一次}}

注:监听器需要在web.xml文件中初始化

本文永久更新链接地址:http://www.xuebuyuan.com/Linux/2016-12/138515.htm

以上就上有关Java类写入日志和定时删除日志的相关介绍,要了解更多Java类写入日志,Java类,Java类写入日志和定时删除日志,编程,Linux编程,Linux Shell,Android,Android教程,JAVA,C语言,Python,HTML5内容请登录学步园。

抱歉!评论已关闭.