前端日志探讨二

在前面一篇文章中我探讨了下在IE浏览器的情况下使用前端日志,但我们知道很多人不使用IE作为默认浏览器。

下面探讨下在高版本chorme浏览器里的日志存储和发送。

由于chorme浏览器为了安全问题在今年已经停止使用插件这种方式,导致现在不允许在chorme中使用插件来更改我们本地的文件这样的操作了。--(吐槽一下,禁用插件导致了我的报表打印功能无法使用了。原来的排版漂亮的报表现在无法再chorme上使用,头疼)

但是由于chorme是一款功能强大的浏览器,首先他为我们提供了一些高级特性。如我们现在要用到的本地数据存储功能。在chorme中我们可以轻松的使用。

首先自然是检测浏览器是否支持本地存储。在HTML5中,本地存储是一个window的属性,包括localStorage和sessionStorage,从名字应该可以很清楚的辨认二者的区别,前者是一直存在本地的,后者只是伴随着session,窗口一旦关闭就没了。由于日志是要长期存储的,所以我们目前只考虑localStorage这种方案,当然使用sessionStorage也是可以的,不过要求你快速的将日志传回到持久层,存放起来。这导致有些日志由于时间问题或没有及时机制无法上传。

localStorage:

if(window.localStorage){
           alert(‘This browser supports localStorage‘);
          }else{
             alert(‘This browser does NOT support localStorage‘);
          }

本地存储有多重方法,这里最推荐使用的自然是getItem()和setItem(),清除键值对使用removeItem()。如果希望一次性清除所有的键值对,可以使用clear()。

我们可以使用一个日期函数来表明日志的日期等,下面代码如下:

Date.prototype.format = function (format) {
var o = {
"M+": this.getMonth() + 1, //month
"d+": this.getDate(), //day
"h+": this.getHours(), //hour
"m+": this.getMinutes(), //minute
"s+": this.getSeconds(), //second
"q+": Math.floor((this.getMonth() + 3) / 3), //quarter
"S": this.getMilliseconds() //millisecond
}
if (/(y+)/.test(format)) format = format.replace(RegExp.$1,
(this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o) if (new RegExp("(" + k + ")").test(format))
format = format.replace(RegExp.$1,
RegExp.$1.length == 1 ? o[k] :
("00" + o[k]).substr(("" + o[k]).length));
return format;
}

使用时简单使用:

var storage = window.localStorage;

var newTime=new Date();

storage.setItem(newTime.format (‘yyyy-mm-dd‘)+‘username‘,0);

存储,然后在定时的上传日志并情况即可。

时间: 2024-11-29 03:05:52

前端日志探讨二的相关文章

前端日志探讨一

在程序设计中日志是个很好的东西,经常帮助我们跟踪代码的运行情况,记录日志有助于我们维护管理我们的项目. 一般我们的日志在服务端,取得日志的方法也很简单,直接使用log4这样的类库就可以很好的完成所需任务.但是在特殊情况下我们可能会需要B/S架构的系统给我们留一个前端的日志.下面来探讨一二. 首先客户端可能是我们未知范围的.这种我们后续再讨论.先讨论客户端在我们控制范围内的日志.如公司内部的流程系统等内部系统. 如果你公司是不练外网的内部系统.切使用IE浏览器做为主浏览器.那可以尝试使用IE自带的

winform学习日志(二十三)---------------socket(TCP)发送文件

一:由于在上一个随笔的基础之上拓展的所以直接上代码,客户端: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.Sockets; using Sys

前端日志

现今有很多无法预知的错误出现,但又不是所有的错误都可以使用pc端的浏览器重现问题所在, 所以前端日志很有必要,日志的出现就是记录某些东西,让开发人员更好锁定问题所在,而后台 在这方面的工作就很完善,这样大大的提高追踪问题速度,然而前端的兼容性是一件很头痛的问题, 有可能写了一段很新的技术代码,然而某些浏览器不兼容而挂了,这样很可能无法追踪到问题, 所以前端日志这个时刻起的作用就起来了. 前端日志使用到技术一般就几个,一个是try()catch(e){}和onerror,这两个,如果有必要的也会使

winform学习日志(二十四)----------datetime和timer的使用(小小幻灯片)

一:展示图片 每秒换一次图片,一共六十张图片,00-59 二:代码 a,设计代码 namespace timePicture { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 清理所有正在使用的资源. /// </summary

Android-LogCat日志工具(二)

既然是Java语言,那么对于很多人来说,用System.out.println() 方法来打印日志是最熟悉.最简单不过了.不过在真正的项目开发中,是极度不建议使用 System.out.println()方法的! 为什么 System.out.println()方法会这么遭大家唾弃呢?经过老师和同学极度鄙视之后,发现这个方法除了使用方便一点之外,其他就一无是处了.方便在哪儿呢?在 Eclipse中你只需要输入 syso,然后按下代码提示键,这个方法就会自动出来了,相信这也是很多 Java新手对它

winform学习日志(二十八)----------将汉字转化为拼音,正则表达式和得到汉字的Unicode编码

一:上图,不清楚的看代码注解,很详细了 二:具体代码 窗体代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Text.RegularExpressio

winform学习日志(二十六)----------控件treeview使用

一:实现功能,获得选中节点,在选中节点下添加节点,折叠,展开,删除,得到选中节点下checked项,选中根节点其下节点也选中,图标.上图 二:相关代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windo

【PC网站前端架构探讨系列】关于中小型PC网站前端架构方案的讨论与实践

 说在前面 好几天没更新这个系列文章了,这段时间还是在研究这块东西,遇到的各种奇葩问题,最后写完,只是调试就花了两天,果然发现在和大神之间的距离越来越远,在加上大部分时间在追求自己的梦想,梦想同样也是遥遥无期啊!一直在思考星星的那句话,人到底该不该追求梦想,做个咸鱼到底好不好的,吃吃喝喝睡睡的,反正最近感悟挺多,抽时间写个文章,好好和大家聊聊,把我的心里话告诉大家,程序员不容易,寻梦者更难啊!比如,这个所谓的pc网站的前端框架,这对一个做后台而且还是多年一直在做C#.JAVA没怎么写脚本的我来说

winform学习日志(二十九)----------根据标点符号分行,StringBuilder的使用;将字符串的每个字符颠倒输出,Reverse的使用

一:根据标点符号分行,上图,代码很简单 二:代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Lines { public partial class Fr