我的日志文件中没有任何内容

Nothing shows up in my log file

我正在尝试创建一个记录器,将所有堆栈跟踪记录到我的文本文件 "log.txt"。当我 运行 此代码时,目录中会创建一个空白 log.txt 文档,但 txt 文件中未写入任何内容。

我下面的代码如下:

public void Log()
    {
        // Create a file for output .txt.
        Stream debugFile = File.Create(@"C:\temp\log.txt");
        // create TextWriterTraceListener named "file"
        TextWriterTraceListener debugWriter = new TextWriterTraceListener(debugFile, "file");
        // add to debug listeners
        Debug.Listeners.Add(debugWriter);
        // set callstack to be shown
        Debug.Listeners["file"].TraceOutputOptions |= TraceOptions.Callstack;
        // set auto-flush
        Debug.AutoFlush = true;
        Debug.WriteLine("Message: " + Environment.StackTrace);
        debugFile.Close();
    }

确保在项目的“属性”>“构建”部分选中 'Define DEBUG constant' 复选框。

它基本上只是一个定义的常量,尽管微软有点神秘地称它们为 'Conditional Compilation Symbols'...VS 根据是否定义了 TRACE 或 DEBUG 来做一些事情(比如允许写出调试或跟踪侦听器)。这样,你可以将所有你想要的调试助手写入你的文件,只要它们被 #if#endif 包围,一旦你准备好部署你的程序就不要定义这些常量,编译器将忽略(不编译)这些代码部分。

您也可以定义自己的常量。假设您在“条件编译符号”框中键入以下内容:"SENDLOGGING"。在您的代码中,您可以

private void Log()
{
    #if LOCALLOGGING
    //write to a file 
    #elif SENDLOGGING
    //send yourself an email with relevant info
    #else
    //do some other stuff
    #endif
}

在这种情况下,中间部分将 运行。如果您定义了 LOCALLOGGING,第一个块将 运行。

更多阅读:https://msdn.microsoft.com/en-us/library/0feaad6z.aspx