好了,所以我想有对ASP.net和C#运行的网站错误日志文件。

我试图存储驱动具有常规路径。 期待它,因为它是在C#代码(代码隐藏页),它会拿起服务器并将其存储在那里。 (在结束这是获取在服务器上执行的代码)

可惜的是,我那不是真实的。它会保存从客户端打开该网站本地计算机上。

如何才能迫使它被保存在服务器计算机上?

我想在一个地方所有的错误日志。 阅读或如何任何建议,以做到这一点。

   string path = "C:\\WebSite";
   string error = "error";          
   try
    {
      // check if dir exists if it does i add file name to the path
      // i removed code to keep it simple
      path += "\\logs.txt";

      FileStream log_fs = 
              new FileStream(path, FileMode.Append, FileAccess.Write);
      StreamWriter log_sw = 
              new StreamWriter(log_fs);
      string log = String.Empty;

      // formate log string using error message

      log_sw.Write(log);
      log_sw.Close();
      log_fs.Close();
   }
   catch (Exception ex)
   {
        // here I e-mail the error in case logging failed
   }

这个代码将生成的本地机器上的文件,而不是服务器

有帮助吗?

解决方案

可以登录到网络服务器上的任何位置(即ASPNET用户帐户具有写权限)与代码如这样:

string log = String.Empty;

// format log string using error message

try
{
    using (StreamWriter logFile = new StreamWriter(@"C:\WebSite\logs.txt", true))
    {
        logFile.WriteLine(log);
    }
}
catch
{
    // here I e-mail the error in case logging failed
}

这将文件写入到托管的网站的Web服务器。现在,如果你在开发过程中本地运行的网站,您使用的是内置的Web服务器VS或IIS,那么当然这个文件将被你的机器上本地测试网站时创建的。

其他提示

要回答你的问题的建议部分,你使用 ELMAH 考虑,它将错误记录到不同的存储装置:

Microsoft SQL Server的 甲骨文(OracleErrorLog) SQLite的(第3版)数据库文件 的Microsoft Access(AccessErrorLog) VistaDB的(VistaDBErrorLog) 宽松的XML文件 RAM(存储器)

或通过电子邮件发送,微博

ELMAH是非常容易安装和非常有效的

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top