Beginner
Beginner

Reputation: 29573

how to Output page hits to a text document

I have an HTML home page. I want to be able to output to a text document on the server every time a person views the page.

I want to out put the IP addrs, Page and Date/Time anyone know an easy way of doing this?

If it has to be done other than html i would prefer to use ASP.

Upvotes: 0

Views: 77

Answers (4)

Shadow Wizzard
Shadow Wizzard

Reputation: 66388

First, rename the page to have .aspx extension and add code behind file as well.

Second, add this method to the code behind:

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 });
}

And finally just call the above method from within the Page_Load event e.g.

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

This will create text file with the same name as the .aspx (in the same location) plus the current date to avoid clogging the same file with millions of lines, and append one line for each hit.

Edit: this is .NET 4.0 code so you'll have to define this as the target framework in both Visual Studio in case you're using it, and in the IIS configuration. The web.config should be updated by the Studio and in case you're not using it, here are the extra lines:

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

Upvotes: 1

danyolgiax
danyolgiax

Reputation: 13096

You can use an existing log framework like Log4Net.

Upvotes: 0

Ant
Ant

Reputation: 3887

As @Alp said PHP would be the way to go:

  $_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

Then it would just be a case of running a little script that writes those to a file on each page.

Might be worth looking at Google Analytics - it gives lot's of useful stats about visitors (not 100% you can get individual IP addresses, can anyone clarify this?)

Edit:

ASP.NET

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

Upvotes: 1

Alp
Alp

Reputation: 29739

You can use PHP for that if your server supports it.

Upvotes: 0

Related Questions