如何将页面命中输出到文本文档

时间:2011-06-06 07:56:20

标签: asp.net logging

我有一个HTML主页。我希望每次有人查看页面时都能输出到服务器上的文本文档。

我想把IP地址,页面和日期/时间放在任何人都知道的简单方法吗?

如果必须在html之外完成,我宁愿使用ASP。

4 个答案:

答案 0 :(得分:1)

正如@Alp所说,PHP将是最佳选择:

  $_SERVER['REMOTE_ADDR']; //gives you the visitor's IP address

  basename($_SERVER["SCRIPT_NAME"]); //gives you the page name

  date();  // gives you the current date

然后,只会运行一个小脚本,将其写入每个页面上的文件。

可能值得关注Google Analytics - 它提供了很多关于访问者的有用统计数据(不是100%你可以获得个人IP地址,有人可以澄清这个吗?)

编辑:

ASP.NET

Request.ServerVariables["REMOTE_ADDR"]; // ip
Request.ServerVariables["HTTP_REFERER"]; // page

答案 1 :(得分:1)

首先,将页面重命名为.aspx扩展名,并在文件后面添加代码。

其次,将此方法添加到后面的代码中:

private void WriteLog()
{
    string currentFileName = Path.GetFileNameWithoutExtension(Request.FilePath);
    string logFileName = string.Format("{0}_{1}.log.txt", currentFileName, DateTime.Now.ToString("ddMMyyyy"));
    string logFilePath = Server.MapPath(logFileName);
    string IP = Request.ServerVariables["REMOTE_ADDR"];
    string logMessage = string.Format("[{0}] [IP: {1}] [Page: {2}]", DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), IP, Request.FilePath);
    File.AppendAllLines(logFilePath, new string[] { logMessage });
}

最后只需在Page_Load事件中调用上述方法,例如

protected void Page_Load(object sender, EventArgs e)
{
    WriteLog();
}

这将创建与.aspx同名的文本文件(在同一位置)加上当前日期,以避免使用数百万行阻塞同一文件,并为每次点击附加一行。

编辑:这是.NET 4.0代码,因此您必须在Visual Studio中将其定义为目标框架(如果您正在使用它),并且在IIS配置中。工作室应更新web.config,如果您不使用它,以下是额外的行:

<system.web>
  <httpRuntime requestValidationMode="2.0" />
  <compilation debug="true" targetFramework="4.0" />
</system.web>

答案 2 :(得分:0)

如果您的服务器支持PHP,您可以使用PHP。

答案 3 :(得分:0)

您可以使用Log4Net等现有日志框架。