我目前正在质疑代码片段,关于它的有效性和资源耗用。以下是将被编译为DLL的全局日志记录实用程序方法。该方法可以同时访问。礼节和/或写入文件的最佳方式
private static void Log(string logType,
string severity,
object sender,
string format,
params object[] args)
{
if (Logger._logLock.WaitOne(250))
{
try
{
using (StreamWriter sw = new StreamWriter(Logger._activityLogPath, true))
{
if (logType != "RAW")
{
sw.Write("{0} {1} {2} ",
DateTime.Now,
logType,
severity);
}
sw.WriteLine(format, args);
}
}
finally
{
Logger._logLock.ReleaseMutex();
}
}
}
什么是困扰我的是“使用”块将被从同一个文件创建一个流,每一次的东西记录(每秒多调用)。我知道文件缓存,所以我不完全确定重新安装流是一个太大的问题(然而不必要的流缓冲区初始化?)。我在玩Logger类时添加StreamWriter作为变量的想法,但我也想确保在单元不正常关机的情况下写入程序已正确关闭或刷新。已知终端用户关闭该单元。我试图找到安全和速度之间的平衡,只是希望有一点洞察力。谢谢。
感谢您的回复和确认。我将开始寻找你提到的一些预制框架。我只是想确保我没有错过为什么代码是按照原来的方式编写的关键。原来的编码人员并不是一个懒散的人,而且这段代码看起来非常没有他的特征,所以我认为他一定这样做是有原因的。 –
要清楚的是,如果按照您的建议实施,那么已记录到集合中的任何内容,在硬关闭时尚未刷新到该文件,将会丢失。请在确定适当的冲洗间隔时记住这一点。不要说这是坏的/好的或无关紧要的(取决于系统的记录要求)。 – Kevin
还要记住,异常(如果记录它们)应该被记录并立即刷新。 – Kevin