我正在使用C#处理一个.NET项目,我有以下疑问。
我有这种方法可以将一些错误信息写入文件系统上特定目录中的.log文件中:
private static void writeErrorLog(string error)
{
string date = DateTime.Now.ToString("yyyyMMdd_HHmmss");
string currDir = Directory.GetCurrentDirectory();
System.IO.File.AppendAllText(currDir + "\FILE\LOG\Error_" + date + ".txt", error);
}
好的,这个 writeErrorLog(( 方法将被调用到我的代码的某个 try catch 块中,如下所示:
try
{
currentAttachmentFileData = currentAttachmentFile.OpenBinary();
currentAttachementModel = new AttachmentModel(currentAttachment, currentAttachmentFileData);
attachmentsModelList.Add(currentAttachementModel);
}
catch (Exception ex)
{
//writeLog(2, String.Format("Unable to read the attachment, it may be corrupted {0} - {1}", fileName, ex.Message));
writeErrorLog("Errore inserimento attachment. Numero protocollo: " + recNumber
+ " Data protocollo: " + recDate
+ " Nome attachment: " + currentAttachmentFile
+ " INFO: " + ex.ToString() + " | " + ex.Message + " | " + ex.StackTrace);
}
它发生在我代码的不同位置。
我的疑问是:该文件是相同的,因此这意味着每次出现错误时,它都会在此文件中添加新行。
是我的安慰对吗?
文件名是string date = DateTime.Now.ToString("yyyyMMdd_HHmmss");
的,因此每秒都会更改。
您绝对应该在此处添加一些抽象,并将writeErrorLog
隐藏在接口后面。在界面后面,您可以拥有自己的writeErrorLog
实现,但正如其他人建议的那样,我强烈建议使用库而不是自定义解决方案。
有关可用库的更多信息:
- 基准测试-5-流行的网络日志库
- dotnetlogging.com