题
好了,所以我想有对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是非常容易安装和非常有效的
不隶属于 StackOverflow