有没有办法找出是否已在未修改程序集的情况下使用TRACE或DEBUG标志集编译程序集?
我想在我的应用程序中捕获某些但不是全部的HttpWebRequest流量以进行调试.它是由IIS托管的Web服务.
我已阅读如何:配置网络跟踪.这很好用,但我不希望将跟踪指向文件,因为文件系统可能存在权限问题,数据敏感性等.我想直接捕获内存中的某些东西,我随后可以检查或加密和电子邮件.最好不要对app.config文件进行任何更改.
我尝试了以下内容,但显然我错过了将TextWriterTraceListener绑定到System.Net的步骤.如何将System.Net流量捕获到我的StringWriter中?
StringWriter sw = new StringWriter();
TextWriterTraceListener myListener = new TextWriterTraceListener(sw);
Trace.Listeners.Add(myListener);
HttpWebRequest req = (HttpWebRequest) WebRequest.Create("http://www.microsoft.com");
HttpWebResponse resp = (HttpWebResponse) req.GetResponse();
Stream s = resp.GetResponseStream();
byte[] buf = new byte[4096];
while (s.Read(buf, 0, buf.Length) > 0) ;
s.Close();
myListener.Flush();
sw.Flush();
Run Code Online (Sandbox Code Playgroud)
编辑:具体来说,我想在运行时做此等价的,不过我不想输出去network.log,我想它去我已经建立了用于此目的的字符串缓冲区.
<configuration>
<system.diagnostics>
<sources>
<source name="System.Net.Sockets" tracemode="includehex">
<listeners>
<add name="System.Net.Sockets" type="System.Diagnostics.TextWriterTraceListener" initializeData="network.log" />
</listeners>
</source>
</sources>
<switches>
<add name="System.Net.Sockets" value="Verbose"/>
</switches>
<trace autoflush="true" />
</system.diagnostics>
</configuration>
Run Code Online (Sandbox Code Playgroud) 在NUnit中,我习惯在测试中编写Trace语句,并将它们显示在NUnit gui的trace选项卡中.
在一个新项目中,我正在转向Visual Studio Professional Addition中的内置单元测试,我相信它是mstest.exe的接口.
测试代码:
<TestMethod()>
Public Sub TestPagesInheritFromBasePage()
Dim webUI As Assembly = Assembly.GetAssembly(GetType(WebUI.BasePage))
Dim badPages As New List(Of String)
For Each t As Type In webUI.GetTypes()
Debug.Write(t.Name + ", ")
Trace.Write(t.Name + ", ")
If t.BaseType Is GetType(System.Web.UI.Page) Then badPages.Add(t.Name)
Next
Debug.Flush()
Trace.Flush()
If badPages.Count > 0 Then
Assert.Fail("{0}: do not inheriting from BasePage", String.Join(", ", badPages.ToArray()))
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
我遇到了失败,所以我知道Debug.Write和Trace.Write行正在执行.
我已经阅读了MSDN文档来编写这些测试,如果在命令行执行,我可以通过以下方式查看跟踪输出:
mstest.exe /testcontainer:mydll.dll /detail:debugtrace
Run Code Online (Sandbox Code Playgroud)
但是,在visual studio中直接执行测试时,我找不到跟踪输出.是否有另一种在单元测试期间输出信息的首选方法,或者我是否缺少在visual studio中查看跟踪信息的选项?
答案: 下面的两个答案(Console.Write和Debug.Write)都有效,结果在测试结果详细信息中(底部的TestResult窗格,右键单击测试结果并转到TestResultDetails).另外,我在项目属性中设置了Debug和Trace常量.
我想保存方法调用的日志.Traceview支持该功能,我可以获得.trace文件格式.
但是,我需要在没有DDMS的情况下打开.trace文件格式.
如果我无法在没有DDMS的情况下打开.trace文件,我如何获取方法调用的日志?(最好是.txt文件格式.)
谢谢.
我试图理解Trace.Writevs Trace.TraceInformation和应该使用哪个之间的区别.
我尝试配置traceOutputOptions时间戳/日期时间.我只需要为我正在编写的每条消息添加时间戳.我得到的日期时间有点混乱,因为它在下一行中附加应用程序名称和较少用户友好的时间戳,如下所示.
ConsoleApplication1.exe Information: 0 : Hello - Trace!
DateTime=2011-01-31T14:26:11.1538509Z
ConsoleApplication1.exe Error: 0 : Hello - Trace!
DateTime=2011-01-31T14:26:11.1538509Z
Run Code Online (Sandbox Code Playgroud)
我所需要的就像是
2011-01-31 11:32 Information: Hello - Trace!
2011-01-31 11:33 Error: Hello - Trace!
Run Code Online (Sandbox Code Playgroud)
App.config这样做有什么简单的方法吗?
我想了解跟踪是如何工作的
我创建了一个简单的新Web项目.这是我可以使用的代码
// Create a trace listener for the event log.
EventLogTraceListener myTraceListener = new EventLogTraceListener("myEventLogSource");
// Add the event log trace listener to the collection.
Trace.Listeners.Add(myTraceListener);
// Write output to the event log.
Trace.WriteLine("Test output");
Run Code Online (Sandbox Code Playgroud)
我正在从这个msdn链接中获取帮助
我的web.config中的设置如下
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="myListener"
type="System.Diagnostics.EventLogTraceListener"
initializeData="TraceListenerLog" />
</listeners>
</trace>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此代码时,我不知道这个日志记录发生在哪里我检查了事件查看器,在"应用程序和服务日志"下,我期望创建一些名为"myEventLogSource"的新日志但是没有发生.
请任何人解释一下这是如何工作的.
如果我在跑
sudo iosnoop | grep "gem"
Run Code Online (Sandbox Code Playgroud)
然后在另一个终端运行
gem env
Run Code Online (Sandbox Code Playgroud)
在iosnoop终端,我看到:
dtrace: error on enabled probe ID 4 (ID 1106: io:mach_kernel:buf_strategy:start): illegal operation in action #3 at DIF offset 0
dtrace: error on enabled probe ID 4 (ID 1106: io:mach_kernel:buf_strategy:start): illegal operation in action #3 at DIF offset 0
dtrace: error on enabled probe ID 4 (ID 1106: io:mach_kernel:buf_strategy:start): illegal operation in action #3 at DIF offset 0
dtrace: error on enabled probe ID 4 (ID 1106: io:mach_kernel:buf_strategy:start): illegal operation in …Run Code Online (Sandbox Code Playgroud) 一旦使用适用于ASP.NET Web API的log4net进行日志记录和跟踪设置,需要记录和/或跟踪的具体方面是什么?
我从Web API的角度来看这个问题.是否有一系列必须记录这个或必须跟踪这个.比如,INFO跟踪控制器的请求,任何NULL检查等.
是否有可以验证的引用列表,以确保ASP.NET Web API中的最佳日志记录和跟踪覆盖率?
我正在Linux下开发一个程序.
出于调试目的,我想跟踪从我的程序到某个(最好是共享的)库的所有调用.(我不想跟踪库内发生的调用.)
对于系统调用,有一些strace.是否有任何工具可以跟踪对共享库的调用?
我试图在我的应用程序中"注入"自定义跟踪方法.
我希望尽可能优雅,不需要修改现有的大部分代码,并且可以轻松启用/禁用它.
我能想到的一个解决方案是创建一个自定义Attribute,我将它附加到我想要跟踪的方法.
基本理念:
public class MethodSnifferAttribute : Attribute
{
private Stopwatch sw = null;
public void BeforeExecution()
{
sw = new Stopwatch();
sw.Start();
}
public void ExecutionEnd()
{
sw.Stop();
LoggerManager.Logger.Log("Execution time: " + sw.ElapsedMilliseconds);
}
}
public class MyClass
{
[MethodSniffer]
public void Function()
{
// do a long task
}
}
Run Code Online (Sandbox Code Playgroud)
是否有任何现有.NET属性为调用/结束方法提供回调?
trace ×10
c# ×5
.net ×2
.net-trace ×1
android ×1
asp.net ×1
asp.net-2.0 ×1
assemblies ×1
ddms ×1
dtrace ×1
io ×1
log4net ×1
logging ×1
macos ×1
mstest ×1
nunit ×1
path ×1
profiling ×1
release-mode ×1
strace ×1
unit-testing ×1