来自脚本背景,我开始使用c#和.net。我创建了一个类,它创建一个文本文件,通知进程已完成。我在控制台应用程序中实例化该类,并在最后调用写入过程。我正在尝试做的是在发生错误或警告时跟踪我所有其他类,并在通知中反映该事件。
我已经使用public static bools实现了这一点,因此无论运行什么类,当捕获发生时,我都可以将bool更新为true。我觉得这是错误的,我现在还不太了解我应该做些什么。
有人可以帮忙吗? 代码示例:
namespace Logging
{
public class Notice
{
public static bool HasWarning { get; set; }
public static bool HasError { get; set; }
public string ProcessName {get; set;}
public enum Status
{
[Description("Complete Success")]
Complete_Success,
[Description("Complete with Warnings")]
Complete_With_Warnings,
[Description("Error Incomplete")]
Error_Incomplete
}
public void EndProcess(Status status)
{
StringBuilder sb = new StringBuilder();
sb.Append(string.Format("{0} is Complete!", ProcessName));
sb.Append(Environment.NewLine);
sb.Append(Environment.NewLine);
sb.Append(string.Format("Completion Status: {0}", ToStringEnums(status)));
sb.Append(Environment.NewLine);
sb.Append(string.Format("Completion Time: {0}", DateTime.Now.ToString("MM/dd/yy H:mm:ss")));
File.WriteAllText(string.Format(@"{0}\EndProcess.txt", Directory.GetCurrentDirectory()), sb.ToString());
}
这就是我所说的:
private static void WriteNotice()
{
Notice newNotice = new Notice();
newNotice.ProcessName = "NCOA";
if (Notice.HasError == true)
newNotice.EndProcess(Notice.Status.Error_Incomplete);
else if (Notice.HasWarning == true)
newNotice.EndProcess(Notice.Status.Complete_With_Warnings);
else
newNotice.EndProcess(Notice.Status.Complete_Success);
}
答案 0 :(得分:0)
我建议在代码周围使用Try Catch语句并跟踪如下:
try
{
//your code goes here
}
catch (Exception ex)
{
//write exception detail to output window using .Net Tracing Tools
System.Diagnostics.Debug.WriteLine(ex.Message);
}
对于更高级的日志记录机制,我建议使用NLOG,如下所示:
static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
try
{
//your code
}
catch (Exception ex)
{
logger.Error(ex.Message + System.Reflection.MethodBase.GetCurrentMethod());
}