我的日志文件中没有任何内容
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,第一个块将 运行。
我正在尝试创建一个记录器,将所有堆栈跟踪记录到我的文本文件 "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,第一个块将 运行。