Debug.WriteLine 仅出现在输出 window 中,而不出现在控制台 window 中
Debug.WriteLine shows up only in Output window and not Console window
我试图在不调试时清除在控制台中写入的内容,因此例如 运行ning 在发布时它不会显示。因此,为此我将此方法用于不应显示的日志记录
public static void DebugWriteConsole(string s)
{
Debug.WriteLine(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss | ") + s);
if (Log.logger != null)
{
Log.Info(s);
}
}
它在这方面起作用,它在 运行 发布时不会出现,但我遇到的问题是我 运行 应用程序 -c
所以它运行s 在控制台 window 但是当 运行 在调试中 Debug.WritLine
只打印到 vs 输出 window 而控制台中没有任何内容 window.有人知道如何解决这个问题吗?
已在 TraceListeners 集合主题中的 Microsoft 文档中进行了说明
您可以使用 TextWriterTraceListener 并将 System.Console.Out 指定为要写入的流(或任何其他合适的流实例)
TextWriterTraceListener myWriter = new TextWriterTraceListener(System.Console.Out);
Debug.Listeners.Add(myWriter);
或者只使用 ConsoleTraceListener。
ConsoleTraceListener trc = new ConsoleTraceListener();
Debug.Listeners.Add(trc);
另一种选择是使用 pragma 指令来克服 NET Core 问题
public static void DebugWriteConsole(string s)
{
#if DEBUG
Console.WriteLine(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss | ") + s);
#endif
Debug.WriteLine(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss | ") + s);
if (Log.logger != null)
{
Log.Info(s);
}
}
Steve 方法可能适用于大多数人,但如果您使用 .Net Core
并遇到此问题,我找到了这样的解决方案,因为 .Net Core 没有 Debug.Listeners
方法来执行此操作就是这样写方法
[Conditional("DEBUG")]
public static void DebugWriteConsole(string s)
{
Console.WriteLine(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss | ") + s);
if (Log.logger != null)
{
Log.Info(s);
}
}
仍在使用 Console.WriteLine
但将 Conditional
属性放在方法上
我试图在不调试时清除在控制台中写入的内容,因此例如 运行ning 在发布时它不会显示。因此,为此我将此方法用于不应显示的日志记录
public static void DebugWriteConsole(string s)
{
Debug.WriteLine(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss | ") + s);
if (Log.logger != null)
{
Log.Info(s);
}
}
它在这方面起作用,它在 运行 发布时不会出现,但我遇到的问题是我 运行 应用程序 -c
所以它运行s 在控制台 window 但是当 运行 在调试中 Debug.WritLine
只打印到 vs 输出 window 而控制台中没有任何内容 window.有人知道如何解决这个问题吗?
已在 TraceListeners 集合主题中的 Microsoft 文档中进行了说明
您可以使用 TextWriterTraceListener 并将 System.Console.Out 指定为要写入的流(或任何其他合适的流实例)
TextWriterTraceListener myWriter = new TextWriterTraceListener(System.Console.Out);
Debug.Listeners.Add(myWriter);
或者只使用 ConsoleTraceListener。
ConsoleTraceListener trc = new ConsoleTraceListener();
Debug.Listeners.Add(trc);
另一种选择是使用 pragma 指令来克服 NET Core 问题
public static void DebugWriteConsole(string s)
{
#if DEBUG
Console.WriteLine(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss | ") + s);
#endif
Debug.WriteLine(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss | ") + s);
if (Log.logger != null)
{
Log.Info(s);
}
}
Steve 方法可能适用于大多数人,但如果您使用 .Net Core
并遇到此问题,我找到了这样的解决方案,因为 .Net Core 没有 Debug.Listeners
方法来执行此操作就是这样写方法
[Conditional("DEBUG")]
public static void DebugWriteConsole(string s)
{
Console.WriteLine(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss | ") + s);
if (Log.logger != null)
{
Log.Info(s);
}
}
仍在使用 Console.WriteLine
但将 Conditional
属性放在方法上