当IISExpress出现时,每个人都会感到困惑。没有什么可以阅读控制台消息。因此,例如,在ASPCORE MVC应用程序中,它使用appsettings.json进行配置,如果您使用的是IISExpress,则无法执行任何操作。
现在你可以添加loggerFactory.AddDebug(LogLevel.Debug);在“配置”部分中,它至少会在“调试输出”窗口中显示您的日志。
好消息CORE 2.0这一切都将改变: https://github.com/aspnet/Announcements/issues/255
我通过尝试将DataContext的Log输出更改为输出窗口来找到此问题。所以对于其他试图做同样事情的人来说,我所做的就是创造这个:
class DebugTextWriter : System.IO.TextWriter { public override void Write(char[] buffer, int index, int count) { System.Diagnostics.Debug.Write(new String(buffer, index, count)); } public override void Write(string value) { System.Diagnostics.Debug.Write(value); } public override Encoding Encoding { get { return System.Text.Encoding.Default; } } }
在那之后:dc.Log = new DebugTextWriter(),我可以看到输出窗口中的所有查询(dc是DataContext)。
有关更多信息,请查看此内容: http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers
如果你碰巧在你的ASP.net项目中使用NLog,你可以添加一个 调试器目标 :
<targets> <target name="debugger" xsi:type="Debugger" layout="${date:format=HH\:mm\:ss}|${pad:padding=5:inner=${level:uppercase=true}}|${message} "/>
并将日志写入此目标以获得所需的级别:
<rules> <logger name="*" minlevel="Trace" writeTo="debugger" />
现在你在VS的“输出”窗口中就像Jetty一样有控制台输出,并确保你在调试模式下运行(F5)。
在ASP.NET应用程序中,我认为它转到了在调试期间可见的输出或控制台窗口。
如果你使用 System.Diagnostics.Debug.WriteLine(...) 代替 Console.WriteLine() ,那么你可以看到结果 的 产量 强> Visual Studio窗口。
System.Diagnostics.Debug.WriteLine(...)
Console.WriteLine()
默认情况下根本没有控制台监听。在调试模式下运行时,附加了一个控制台,但是在生产环境中,它就像您所怀疑的那样,消息不会随处可见,因为没有任何内容正在侦听。
该 TraceContext ASP.NET中的对象写入 DefaultTraceListener 哪个输出到主机进程' 标准输出 。而不是使用 Console.Write() ,如果你使用 Trace.Write ,输出将转到过程的标准输出。
TraceContext
DefaultTraceListener
Console.Write()
Trace.Write
你可以使用 System.Diagnostics.Process 对象获取站点的ASP.NET进程并使用。监视标准输出 OutputDataRecieved 事件。
System.Diagnostics.Process
OutputDataRecieved