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

本文关键字:显示 任何内 日志 文件 我的 | 更新日期: 2023-09-27 18:02:35

我试图创建一个日志记录器,记录所有堆栈跟踪到我的文本文件,"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();
    }

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

确保在项目的Properties> Build部分选中'Define DEBUG constant'复选框。

它基本上只是一个定义的常量,尽管微软有点神秘地称之为"条件编译符号"…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
}

在本例中,将运行中间部分。如果您定义了localloging,那么第一个块将运行。

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