我的日志文件中没有显示任何内容
本文关键字:显示 任何内 日志 文件 我的 | 更新日期: 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