ngoại lệ ghi nhật ký đây là mã bên dưới được sử dụng để ghi ngoại lệ trong tệp văn bản. ở đây tôi chỉ nhận được thông báo lỗi.ngoại lệ ghi nhật ký trong C#
nhưng nó không cho tôi biết trường hợp ngoại lệ xảy ra ở dòng nào. sẽ có bất kỳ onr nào cho tôi biết howi có thể đạt được điều đó để tôi nhận được ngay cả số dòng nơi ngoại lệ xảy ra.
try
{
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
#region WriteLogError
/// <summary>
/// Write an error Log in File
/// </summary>
/// <param name="errorMessage"></param>
public void WriteLogError(string errorMessage)
{
try
{
string path = "~/Error/" + DateTime.Today.ToString("dd-mm-yy") + ".txt";
if (!File.Exists(System.Web.HttpContext.Current.Server.MapPath(path)))
{
File.Create(System.Web.HttpContext.Current.Server.MapPath(path)).Close();
}
using (StreamWriter w = File.AppendText(System.Web.HttpContext.Current.Server.MapPath(path)))
{
w.WriteLine("\r\nLog Entry : ");
w.WriteLine("{0}", DateTime.Now.ToString(CultureInfo.InvariantCulture));
string err = "Error in: " + System.Web.HttpContext.Current.Request.Url.ToString() +
". Error Message:" + errorMessage;
w.WriteLine(err);
w.WriteLine("__________________________");
w.Flush();
w.Close();
}
}
catch (Exception ex)
{
WriteLogError(ex.Message);
}
}
#endregion
Một lưu ý phụ, mã này là * không * thread-safe và IIS là môi trường đa luồng. –
Gọi đệ quy WriteLogError() bên trong khối catch của bạn là một ý tưởng khá xấu ... – jeroenh
@jeroenh: Thất bại trong quá trình ghi nhật ký không thể được báo cáo với nhiều lần đăng nhập tương tự. Một cách khác là sử dụng Nhật ký Sự kiện, đây là một sự đau đớn nhưng hữu ích. Khác là hoặc là âm thầm bỏ qua nó hoặc người nào khác giết quá trình. –