我想在我的应用程序中添加一个简单的日志记录机制,以便记录应用程序运行期间发生的错误的详细信息。
private TextWriter m_TextWriter;
private List<string> m_LogEntries; // buffered log messages
// ...
public void Write(string message)
{
m_LogEntries.Add(message);
if (m_LogEntries.Count >= m_LogEntriesLimit)
{
Flush();
}
}
private void Flush()
{
try
{
foreach (var message in m_LogEntries)
{
m_TextWriter.WriteLine(message);
}
m_TextWriter.Flush();
}
catch
{
// How to deal with exceptions?
}
finally
{
m_LogEntries.Clear();
}
}
日志数据写在文本文件中,因此在每次写入操作期间可能会发生一些异常。处理对记录器方法调用期间发生的异常的正确方法是什么?我应该抓住并忽略它们吗?
换句话说,记录器通常用于记录在执行应用程序期间发生的异常的详细信息。但是如何处理在写日志消息期间可能发生的异常?
答案 0 :(得分:1)
我建议将这些类型的错误写入Windows事件日志。
答案 1 :(得分:1)
最好使用像Log4Net这样的日志框架。
此外,使用TextWriter
类时遇到异常的可能性非常小。你必须确保:
TextWriter
时,您的路径和权限是正确的。 TextWriter
之外,您的Disposed
对象不会ObjectDisposedException
过早IOException
醇>
您可能需要try-catch
才能100%确定没有发生任何不良事件(例如,当外部进程干扰您的日志记录文件路径时)。如果失败,请考虑在经过多次最大尝试后添加带有退避机制的重试。
无论如何,你可能就像@AnimalStyle所说的那样,如果发生这种情况的那么非常不可能发生。