【发布时间】:2015-07-03 09:35:48
【问题描述】:
我正在尝试将跟踪添加到我的 .net 4.5 ASP.NET MVC 项目中。我做了什么:
(web.config)
<system.diagnostics>
<trace autoflush="true">
<sources>
<source name="TraceSource" switchName="Switch" switchType="System.Diagnostics.SourceSwitch">
<listeners>
<add type="System.Diagnostics.TextWriterTraceListener" name="TextWriter" initializeData="C:\log\trace.log" traceOutputOptions="ProcessId, DateTime, Callstack"/>
</listeners>
</source>
</sources>
<switches>
<add name="Switch" value="Warning"/>
</switches>
</trace>
</system.diagnostics>
在应该写入日志的类中:
ts = new TraceSource("TraceSource");
ts.TraceEvent(TraceEventType.Information, 0, "Authenticating as user: " + CredentialCache.DefaultCredentials.ToString()); Trace.Flush();
基本上,
- 我在 web.config 中的 TraceSource 中添加了 Listener,
- 将 autoflush 设置为 true,
- 在类中初始化 TraceSource,然后写入它。
- 通过调试发现 TraceSource 已正确初始化。
- 检查了 DbgView (SysInternals) 但我什么也没看到。
- 使用 ProcessMonitor 检查是否在某处创建了日志文件。什么都没有。
- 尝试了不同的路径
- 查看了应用程序文件夹、system32,当然还有指定的文件夹。
更多信息:
- 模拟 = 真
- 本地开发机器
- IIS Express,Visual Studio 2013
- 在调试和发布中设置了 TRACE 常量
我错过了什么?为什么还是不行?
【问题讨论】:
-
什么时候调用 Trace Source 的 Flush。即 ts.Flush()?
-
自动刷新为真。我也尝试过手动冲洗,但这也不起作用。 @克里希纳
-
抱歉错过了 - IISExpress 用户是否有权访问此文件“C:\log\trace.log”?
-
您也可以尝试使用更大的消息进行日志记录,我发现这个链接似乎在同一行中解释了更多。 stackoverflow.com/questions/14502960/…
-
IISExpress 以管理员用户身份运行。我也看到了那个链接,但我看不到任何我还不知道的东西。你能具体说明你的意思吗? @克里希纳
标签: c# asp.net trace diagnostics