我有一个正在运行的c#控制台应用程序。我已经发布了它,因为我想在几台电脑上做一些测试。
该应用程序有时会导致错误和弹出窗口,迫使我关闭该应用程序,从而关闭控制台,然后才能查看有问题的异常。
有什么方法可以让我看到类似于在Visual Studio中运行它的堆栈跟踪日志吗?我认为这可能通过Windows事件查看器实现,但我不完全确定。或者至少允许控制台可见,而不是在我确认有错误时自动关闭它。
您可以做您提到的所有事情。例如,要查看控制台窗口中的错误,可以在代码周围放置try-catch块,并调用console.WriteLine()和console.ReadLine()方法。
还有stacktrace.tostring()方法,例如
http://msdn.microsoft.com/en-us/library/system.diagnostics.stacktrace.tostring(v=vs.110).aspx
控制台应用程序会自动关闭,即使在代码中放入Console.WriteLine()也是如此。您需要的是位于末尾的Console.ReadLine(),可能在try-catch块的finally部分。
这样,控制台窗口将保持打开状态。
您还可以通过控制台ap将事件写入事件日志,并在事件查看器中查看它们。
这是通过EventLog.CreateEventSource方法使用System.Diagnostics命名空间完成的。下面的链接:
http://support.microsoft.com/kb/307024
另一种方法是使用系统。IO将行写入日志文件(例如.txt文件),这样,如果进程在深夜运行,您就可以查看错误。在这种情况下,您可以使用以下代码:
public static void LogMessage(string message)
{
TextWriter textWriter = new StreamWriter("download.log", true);
textWriter.WriteLine(message);
textWriter.Close();
}
然后在你的例外:
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Logging.LogMessage(ex.Message);
}