具有“全局”设置的实例类

时间:2012-12-18 18:59:52

标签: c# .net

来自脚本背景,我开始使用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);

    }

1 个答案:

答案 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());
    }