1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | // 解决 File API 浏览器兼容性问题 self.requestFileSystemSync = self.webkitRequestFileSystemSync || self.requestFileSystemSync; self.BlobBuilder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder; var html5logFolder = null; self.onmessage = function(e) { var data = e.data; switch (data.cmd){ // 初始化 log 文件夹 case "init":{ var fs = self.requestFileSystemSync(PERSISTENT, data.grantedBytes); html5logFolder = fs.root.getDirectory('html5logs', {create: true}); break; } // 写内容到 log 文件 case "log":{ var fileEntry = html5logFolder.getFile(data.logFileName, {create: true}); var fileWriter = fileEntry.createWriter(); var blob = new BlobBuilder(); blob.append(data.logEntryStr); fileWriter.seek(fileWriter.length); fileWriter.write(blob.getBlob('text/plain')); break; } } }; |
1 2 3 | METHODMAP:{"1":"error","2":"warn","3":"info","4":"debug"}, _logData:{"status":false}, _logWorker:new Worker('HTML5File.js'), |
1 2 3 4 5 6 7 8 9 10 11 12 13 | constructor: function(grantedBytes) { //1 表示记录错误信息,2 表示记录警告信息,3 表示记录一般信息,4 表示记录调式信息 this.logLevel = 1; this.indent = 0; if(!this._logData.status){// 所有实例只初始化一次 this._logData.status = true; this._logWorker.postMessage({"cmd":"init","grantedBytes":grantedBytes}); } this._logWorker.onmessage = function(e) { // 用来接收 Web Workers 返回的数据 } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | _record: function(level, location, message, extra) { var logEntry = { level: level, time: new Date(), loc: location, msg: message, extra: extra, indent: this.indent }; if (level <= this.logLevel) { var logInfo = this._formatLogEntry(logEntry); this._writeLogEntryToFile(logEntry,logInfo); } }, _writeLogEntryToFile:function(logEntryObj,logEntryStr){ // 每一天创建一个 log 文件 var logFileName = dojo.date.locale.format(logEntryObj.time, {datePattern: "yyyy-MM-dd'.log'","selector":"date"}); this._logWorker.postMessage({"cmd":"log","logFileName":logFileName,"logEntryStr":logEntryStr}); } |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |