基于事件日志的访问记录(c#)以后备用!
2006-08-09 10:53
323 查看
引用
using System;
using System.Data;
using System.Web;
using System.Web.UI;
using function;
namespace count
{
public class Vister:Page
{
SqlCmd ss=new SqlCmd();
FileCmd ff=new FileCmd();
EventLog even=new EventLog();
Datetime t1=new Datetime();
Root theroot=new Root();
HttpContext context = HttpContext.Current;
public string _referrer;
public string _url=null;
string evenlogpath="referrer.log";
string mide=" ";
public string referrer
{
get
{
return _referrer;
}
set
{
_referrer=value;
}
}
public string url
{
get
{
return _url;
}
set
{
_url=value;
}
}
public bool updateing
{
get
{
if (context.Application["updateing"]==null)
{
context.Application.Lock();
context.Application["updateing"]=false;
context.Application.UnLock();
}
return (bool)context.Application["updateing"];
}
set
{
context.Application.Lock();
context.Application["updateing"]=value;
context.Application.UnLock();
}
}
public DateTime stday
{
get
{
if (context.Application["stday"]==null)
context.Application["stday"]=DateTime.Now;
return DateTime.Parse(context.Application["stday"].ToString());
}
set
{
context.Application["stday"]=value;
}
}
public object todayvister
{
get
{
if (context.Application["todayvister"]==null || stday<DateTime.Now)
{
context.Application.Lock();
stday=DateTime.Now;
context.Application["todayvister"]=getrefcount(DateTime.Now);
context.Application.UnLock();
}
return context.Application["todayvister"];
}
set
{
context.Application["todayvister"]=value;
}
}
public object online
{
get
{
return "1";
}
}
public object lastvister
{
get {
if (context.Application["lastvister"]==null || stday<DateTime.Now)
{
context.Application.Lock();
stday=DateTime.Now;
context.Application["lastvister"]=getrefcount(DateTime.Now.AddDays(-1));
context.Application.UnLock();
}
return context.Application["lastvister"];
}
set
{
context.Application["lastvister"]=value;
}
}
public Vister()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public int getrefcount(DateTime time)//这里把它转换成一个DATATABLE,方便以后处理
{
return reftable(time).Rows.Count;
}
public DataTable reftable(DateTime time)
{
string str="";
DataTable dt=new DataTable();
str=ff.readfile(theroot.foderpath()+"log/"+t1.endate(time,"yyyy-MM-dd")+"."+evenlogpath);
str=str.Replace("\r\n","$");
string[] sArray=str.Split('$');
DataRow dr;
dt.Columns.Add(new DataColumn("DateTime",typeof(string)));
dt.Columns.Add(new DataColumn("IP",typeof(string)));
dt.Columns.Add(new DataColumn("Url",typeof(string)));
dt.Columns.Add(new DataColumn("UrlReferrer",typeof(string)));
dt.Columns.Add(new DataColumn("UserAgent",typeof(string)));
for (int i=0;i<sArray.Length-1;i++)
{
string sa=sArray[i];
sa=sa.Replace(mide,"#");
string[] aa=sa.Split('#');
dr = dt.NewRow();
dr[0] = aa[0];
dr[1] = aa[1];
dr[2] = aa[2];
dr[3] = aa[3];
dr[4] = aa[4];
dt.Rows.Add(dr);
}
return dt;
}
public String browser(string str)
{
if (str.Split(';')[1]==" U")
return "Mozilla Firefox";
else
return str.Split(';')[1];
}
public String sys(string str)
{
return (str.Split(';')[2]).Replace(")","");
}
public void setvister()
{
DateTime daynow=DateTime.Now;
String ip=context.Request.UserHostAddress;
string rurl=referrer;
if (rurl==null || rurl=="")
rurl="直接输入";
if (url==null)
url="直接输入";
even.filepath=evenlogpath;
String UserAgent=context.Request.UserAgent;
if (context.Request.Cookies["vis"]==null && updateing==false)
{
updateing=true;
even.greatlog(ip+mide+UserAgent+mide+rurl+mide+url);//建立访问信息
context.Response.Cookies["vis"].Value="true";
todayvister=(int)todayvister+1;
updateing=false;
}
}
}
}
using System;
using System.Data;
using System.Web;
using System.Web.UI;
using function;
namespace count
{
public class Vister:Page
{
SqlCmd ss=new SqlCmd();
FileCmd ff=new FileCmd();
EventLog even=new EventLog();
Datetime t1=new Datetime();
Root theroot=new Root();
HttpContext context = HttpContext.Current;
public string _referrer;
public string _url=null;
string evenlogpath="referrer.log";
string mide=" ";
public string referrer
{
get
{
return _referrer;
}
set
{
_referrer=value;
}
}
public string url
{
get
{
return _url;
}
set
{
_url=value;
}
}
public bool updateing
{
get
{
if (context.Application["updateing"]==null)
{
context.Application.Lock();
context.Application["updateing"]=false;
context.Application.UnLock();
}
return (bool)context.Application["updateing"];
}
set
{
context.Application.Lock();
context.Application["updateing"]=value;
context.Application.UnLock();
}
}
public DateTime stday
{
get
{
if (context.Application["stday"]==null)
context.Application["stday"]=DateTime.Now;
return DateTime.Parse(context.Application["stday"].ToString());
}
set
{
context.Application["stday"]=value;
}
}
public object todayvister
{
get
{
if (context.Application["todayvister"]==null || stday<DateTime.Now)
{
context.Application.Lock();
stday=DateTime.Now;
context.Application["todayvister"]=getrefcount(DateTime.Now);
context.Application.UnLock();
}
return context.Application["todayvister"];
}
set
{
context.Application["todayvister"]=value;
}
}
public object online
{
get
{
return "1";
}
}
public object lastvister
{
get {
if (context.Application["lastvister"]==null || stday<DateTime.Now)
{
context.Application.Lock();
stday=DateTime.Now;
context.Application["lastvister"]=getrefcount(DateTime.Now.AddDays(-1));
context.Application.UnLock();
}
return context.Application["lastvister"];
}
set
{
context.Application["lastvister"]=value;
}
}
public Vister()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public int getrefcount(DateTime time)//这里把它转换成一个DATATABLE,方便以后处理
{
return reftable(time).Rows.Count;
}
public DataTable reftable(DateTime time)
{
string str="";
DataTable dt=new DataTable();
str=ff.readfile(theroot.foderpath()+"log/"+t1.endate(time,"yyyy-MM-dd")+"."+evenlogpath);
str=str.Replace("\r\n","$");
string[] sArray=str.Split('$');
DataRow dr;
dt.Columns.Add(new DataColumn("DateTime",typeof(string)));
dt.Columns.Add(new DataColumn("IP",typeof(string)));
dt.Columns.Add(new DataColumn("Url",typeof(string)));
dt.Columns.Add(new DataColumn("UrlReferrer",typeof(string)));
dt.Columns.Add(new DataColumn("UserAgent",typeof(string)));
for (int i=0;i<sArray.Length-1;i++)
{
string sa=sArray[i];
sa=sa.Replace(mide,"#");
string[] aa=sa.Split('#');
dr = dt.NewRow();
dr[0] = aa[0];
dr[1] = aa[1];
dr[2] = aa[2];
dr[3] = aa[3];
dr[4] = aa[4];
dt.Rows.Add(dr);
}
return dt;
}
public String browser(string str)
{
if (str.Split(';')[1]==" U")
return "Mozilla Firefox";
else
return str.Split(';')[1];
}
public String sys(string str)
{
return (str.Split(';')[2]).Replace(")","");
}
public void setvister()
{
DateTime daynow=DateTime.Now;
String ip=context.Request.UserHostAddress;
string rurl=referrer;
if (rurl==null || rurl=="")
rurl="直接输入";
if (url==null)
url="直接输入";
even.filepath=evenlogpath;
String UserAgent=context.Request.UserAgent;
if (context.Request.Cookies["vis"]==null && updateing==false)
{
updateing=true;
even.greatlog(ip+mide+UserAgent+mide+rurl+mide+url);//建立访问信息
context.Response.Cookies["vis"].Value="true";
todayvister=(int)todayvister+1;
updateing=false;
}
}
}
}
相关文章推荐
- 一种基于自定义代码记录用户访问日志在Sharepoint网站的应用方法!
- 一种基于自定义代码记录用户访问日志在Sharepoint网站的应用方法!
- Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
- squid 访问日志记录
- 访问日志不记录静态文件 访问日志切割 静态元素过期时间
- C# 使用TraceSource记录程序日志
- 注册c#中软件运行中的异常事件,并记录日志
- c#实现记录每个线程的log日志
- tomcat配置记录访问ip日志
- C#使用Log4Net记录日志(转的)
- C#使用Log4Net记录日志(转)
- 基于OCCI访问Oracle的记录
- IIS6.0日志文件分析代码_2生成访问记录到文本文件
- 实时事件日志记录和聚合的平台——Sentry
- C#原生邮件发送+发送日志记录
- 访问日志不记录静态文件、访问日志切割与静态元素过期时间
- C#中错误日志记录方法,信息比较详细易定位
- 一个简单实用的“数据库访问层”!(基于C#语言)
- C# 创建自己的日志记录类(源码)