代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
写入日志和定时删除日志
作者:
/ 发布于
2017/1/11
/
548
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 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<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文件中初始化
试试其它关键字
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
贡献的其它代码
Label
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3