Javascript本地日志记录(限制文件个数,限时文件大小)
来源:互联网 发布:ubuntu 12 万m光口 编辑:程序博客网 时间:2024/06/05 18:29
- 使用FileSystemObject对象进行计算机文件系统的访问
- 适用于内部系统
- 使用大量页面脚本处理业务逻辑
- 需要调用第三方OCX、Applet控件
- 记录用户非提交式操作,记录本地日志方便发现问题。
myJs-log.js
var myJs.log = { TYPE_RUN:'Run',//日志类型为运行 TYPE_ERR:'Err',//日志类型为错误 WRITE_RUN_FILE:'run.txt',//运行日志文件 WRITE_ERR_FILE:'err.txt',//错误日志文件 MAX_FILE_SIZE:100*1024*1024,//设置单日志最大为100MB MAX_FILE_NUM:10,//日志文件最大数量10个 LOG_PATH:'C://Workspace',//日志路径 ipcc_fso:null,//ActiveXObject对象 /** 返回当前时间*/ GetYearMonth:function() { var date= new Date(); return date.getFullYear() + "-" +this.FmTimeNum(date.getMonth()+1) + "-" + this.FmTimeNum(date.getDate()) + " " + this.FmTimeNum(date.getHours()) + ":" + this.FmTimeNum(date.getMinutes()) + ":" + this.FmTimeNum(date.getSeconds()); }, /** 格式化时间数值(个位数补全加0显示)*/ FmTimeNum:function(num) { return (num<10?"0":"") + num; }, /** 日志(日志类型, 内容) */ printLog:function(type, logText) { // 日志中记录当前时间 logText = this.GetYearMonth() + " 【" + type + "】 " + logText; // 记录日志的文件名称 var fileName = this.WRITE_RUN_FILE; if(type==this.TYPE_ERR) { fileName = this.WRITE_ERR_FILE; } this.writeFile(fileName, logText);// 写入 }, /** 写入文件(文件名, 写入内容) */ writeFile:function(fileName, logText) { // 判断或创建日志目录 if(!this.ipcc_fso.FolderExists(this.LOG_PATH)){ this.ipcc_fso.CreateFolder(this.LOG_PATH); } // 日志文件全路径名称 var fileAllName = this.LOG_PATH + "//" + fileName; // 判断日志文件是否存在 if(!this.ipcc_fso.FileExists(fileAllName)){ // 新建 var newfileStream = this.ipcc_fso.CreateTextFile(fileAllName, true); newfileStream.Close(); } else { var fileObj = this.ipcc_fso.GetFile(fileAllName); // 超过大小进行备份 if(fileObj.Size >= this.MAX_FILE_SIZE) { var bakfileName=fileName+".1"; this.bakFile(fileName, bakfileName); var newfileStream = this.ipcc_fso.CreateTextFile(fileAllName, true); newfileStream.Close(); } } var fileStream = this.ipcc_fso.OpenTextFile(fileAllName, 8, false); fileStream.WriteLine(logText); fileStream.Close(); }, /** 备份文件名(原文件名称, 备份文件名称)*/ bakFile:function(sourceName, bakName){ var sourceAllName = this.LOG_PATH + "//" + sourceName; var bakAllName = this.LOG_PATH + "//" + bakName; //判断备份文件是否存在 if(this.ipcc_fso.FileExists(bakAllName)) { //获取下一个备份文件 var nextBakName=this.getNextBakName(bakName); var num = nextBakName.substr(nextBakName.length-2); // 备份文件超过最大数量 if(parseInt(num) >= this.MAX_FILE_NUM){ this.ipcc_fso.DeleteFile(bakAllName, true); } else { this.bakFile(bakName, nextBakName); } } var fileObj=spc.log.ipcc_fso.GetFile(sourceAllName); fileObj.Name=bakName; }, /** 获取下一个备份文件名(备份文件名称) */ getNextBakName:function(bakName){ var num = bakName.substr(bakName.length - 1); var nextBakName = bakName.substr(0, bakName.length-1) + (parseInt(num)+1); return nextBakName; }};/** 记录运行日志(内容) */function PrintRunLog(logText) { myJs.log.printLog(myJs.log.TYPE_RUN, logText);}/** 记录错误日志(内容) */function PrintErrLog(logText) { myJs.log.printLog(myJs.log.TYPE_ERR, logText);}$(function(){ try { spc.log.ipcc_fso = new ActiveXObject("Scripting.FileSystemObject"); } catch (e) { alert('请开启IE写日志权限!'); }});
页面脚本直接应用此js,并直接使用方法PrintRunLog 和 PrintErrLog即可。
FileSystemObject详见 Scripting.FileSystemObject对象的详细技巧指南
0 0
- Javascript本地日志记录(限制文件个数,限时文件大小)
- log4j2按日期按级别的日志文件归档(限制文件大小,限制每天的文件个数(10))
- 文件大小限制 -- apache日志 & Linxu文件
- apache日志文件及限制apache日志文件大小
- mssql2005限制日志文件大小(删除大日志)
- 限制SQL Server2000日志文件大小
- 限制Apache日志文件大小和每天生成日志文件的方法
- 如何按日期生成apache日志文件及限制apache日志文件大小
- 上传文件大小的限制和判断(javascript)
- php上传文件大小限制文件
- 限制Apache日志文件大小的方法
- 限制Apache日志access.log文件大小
- 限制 Apache日志文件大小的方法
- Struts 2实现文件的上传下载(解除文件大小限制)
- js限制本地上传文件大小(支持ie6,7,8 firefox 谷歌)
- 比较两个目录下文件是否一致(文件夹个数、文件个数、文件大小)
- 上传文件限制文件大小的解决方法
- php文件上传时,文件大小限制问题
- GeeksforGeeks 1439 Longest Common Substring
- C#92课的主要内容
- 基于Socket编程的远程控制PC音乐播放器App(二)
- loadrunner linux的temp文件清理
- mySql\oracle分页机制
- Javascript本地日志记录(限制文件个数,限时文件大小)
- keras 实现CNN 进行手写字符识别
- View的位置参数及其Scroller类的理解
- Android View 截屏功能的实现
- spring boot 整合mybatis
- gdufe acm 1054 变形课
- JavaWeb开发中修改session的设置
- 13 多种IO函数
- 关于XAMPP中XDBUG扩展