数据库处理SQLHelper.Dll中的SystemError类处理网站错误信息的时候,会写system.log日志,往往出现不能写入的问题。解决办法如下:
1、SystemError的代码如下:
namespace SQLHelper
{
/// <summary>
/// 错误处理函数,用于记录错误日志
/// </summary>
public class SystemError
{
//记录错误日志位置,System.Configuration.ConfigurationManager.AppSettings["LogDir"]从Config中取得虚拟路径, System.Web.HttpContext.Current.Server.MapPath映射到物理路径
private static string m_path = System.Web.HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["LogDir"]);
/// <summary>
/// 记录日志至文本文件
/// </summary>
/// <param name="message">记录的内容</param>
public static void CreateErrorLog(string message)
{
if (!Directory.Exists(m_path))
{
Directory.CreateDirectory(m_path);
}
string strFileName = m_path + "//Systemlog.txt";
if (File.Exists(strFileName))
{
///如果日志文件已经存在,则直接写入日志文件
StreamWriter sr = File.AppendText(strFileName);
sr.WriteLine("/n");
sr.WriteLine(DateTime.Now.ToString() + message);
sr.Close();
}
else
{
///创建日志文件
StreamWriter sr = File.CreateText(strFileName);
sr.Close();
}
}
}
}
2、webconfig配置
<appSettings>
<add key="LogDir" value="~/log/"/>//网站根目录下建log文件夹
</appSettings>
<customErrors mode="Off" defaultRedirect="~/Error.aspx"> </customErrors>//此处为系统报错后的错误显示页,随便写一个错误提示即可,实际的错误信息在Systemlog.txt中。所有的网站异常代码将给用户显示Error.aspx页面。
3、windows设置
如下图1和2、
首先在工具——文件夹选项中取掉简单文件共享,再右键Log文件夹,给ASP.NET用户赋予写入权限,即可对systemlog.txt文件进行写入。