在程序中保留调试行的标准方法

时间:2013-07-12 05:18:04

标签: c# log4net resource-file

我想在程序中添加一些调试行。执行完语句后,它会将当前状态记录到文件中 我是按照以下方式做到的。

    public int? DoWork(int x, int y)
    {
        Log.Write("Received inputs. X an Y values are:"+x+","+y);
        bool result = ChekData(x);
        if (!result)
        {
            Log.Write("First input is not valid");
            return null;
        }

        result = ChekData(y);
        if (!result)
        {
            Log.Write("Second input is not valid");
            return null;
        }
        Log.Write("Valid input found");
        ....
        ....
    }

我觉得这不是标准的做法。在代码中保留这样的文本。搜索后我发现使用资源文件我可以保存这些消息,如名称值对。

但我不知道那个标准。请建议我。

基本用于登录我使用Log4Net

2 个答案:

答案 0 :(得分:1)

这是非常正常的记录方式。

使用资源文件进行日志记录通常没有意义,因为:

  • 它将描述性消息从最有用的地方移开 - 内联代码
  • 原始开发人员最常使用的日志,因此获取日语日志(如果日志资源字符串已正确本地化)对于说英语的开发人员来说很少有用,反之亦然。
  • 避免某些字符串(用于记录的字符串)的本地化可能不方便,本地化它们不是免费的......

答案 1 :(得分:1)

如果仅用于调试目的,我会执行以下操作:

设置适当的调试级别。然后应使用级别构建调试版本以显示所有消息。发布版本通常不需要调试输出。因此,请禁用释放输出的消息级别。

如果您处于发布版本或调试版本中,则可以使用以下两项内容进行区分:

#if DEBUG
// enable all tracing
#endif

或者如果您还希望您的realease构建在附加调试器时带来消息

if(System.Diagnostics.Debugger.IsAttached)
{
    // Someone has attached a debugger, so give more output 
}

如果你想要一个只检查调试/附加调试器的方法,你也可以包装logcall ..