我在我的日志中打印了很多行,同时调试如下:
System.Diagnostics.Debugger.Log(0, null, responseFromServer);
System.Diagnostics.Debugger.Log(0, null, t[0]);
....
Run Code Online (Sandbox Code Playgroud)
所有这些都在同一条线上印刷.我怎样才能让它们以单独的线条印刷?
我试过用
System.Diagnostics.Debugger.Log(0, null, t[0]+"\n");
Run Code Online (Sandbox Code Playgroud)
但是,它没有用.任何帮助将不胜感激 .谢谢
我试图通过使用System.Diagnostics.Process在测试中运行它来捕获控制台应用程序的输出.我遇到字符编码问题."£"在测试中显示为"œ",但是当我运行控制台应用程序时,它正确显示为"£".
如果我设置Console.Out.Encoding = Encoding.Default,它在测试中有效,但在正常运行时无法正常显示.
这里发生了什么,我该如何解决?
我有以下代码可以读取一个大文件,比如超过一百万行。我正在使用 Parallel 和 Linq 方法。有没有更好的方法来做到这一点?如果是,那么如何?
private static void ReadFile()
{
float floatTester = 0;
List<float[]> result = File.ReadLines(@"largedata.csv")
.Where(l => !string.IsNullOrWhiteSpace(l))
.Select(l => new { Line = l, Fields = l.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) })
.Select(x => x.Fields
.Where(f => Single.TryParse(f, out floatTester))
.Select(f => floatTester).ToArray())
.ToList();
// now get your totals
int numberOfLinesWithData = result.Count;
int numberOfAllFloats = result.Sum(fa => fa.Length);
MessageBox.Show(numberOfAllFloats.ToString());
}
private static readonly char[] Separators = { ',', ' ' };
private static void ProcessFile() …
Run Code Online (Sandbox Code Playgroud) 如何在net 4.0 c#项目中定义一个自动添加到所有TraceSource的默认TraceListener?
目前我必须列出我在App.config文件中使用的每个命名的TraceSource,如下所示:
<system.diagnostics>
<sharedListeners>
<add name="MyListener" type="MyListenerType,MyAssemblyName" />
</sharedListeners>
<sources>
<source name="Class1" switchValue="All">
<listeners><add name="MyListener"></add></listeners>
</source>
<source name="Class2" switchValue="All">
<listeners><add name="MyListener"></add></listeners>
</source>
<source name="Class3" switchValue="All">
<listeners><add name="MyListener"></add></listeners>
</source>
... repeat for a gazillion classes ...
</sources>
<system.diagnostics>
Run Code Online (Sandbox Code Playgroud)
我使用的SharedListener应该接收来自所有TraceSources的所有输出,除非另有说明.使用上述语法,这需要为每个TraceSource手动输入.
每当我介绍一个带有新TraceSource的新类时,我都必须更新App.Config.如果多个程序使用该程序集,我必须更新多个App.Config.更新这些条目时的拼写错误不会产生任何错误,它将默默地省略来自正确源的所有跟踪输出.
有没有办法可以通过App.config设置默认的TraceListener,所以如果我想偏离默认值,我只需要命名特定的TraceSources?
我正在尝试从事件查看器中复制以下内容
我遇到了一些问题.首先,我得到的一些名字不是显示名称或友好名称.例如,对于"Microsoft Office Alerts",我只是回到"OAlerts".如何从"OAlerts"获得完整的"Microsoft Office Alerts"?
第二个问题是弄清楚层次结构.似乎所有我能做的就是解析破折号并进行某种最好的猜测.在API中似乎没有一种简单的方法可以解决这个问题.GetLogNames只为您提供所有日志的平面列表
EventLogSession session = new EventLogSession();
List<string> logNames = new List<string>(session.GetLogNames());
foreach (string name in logNames)
{
//EventLogConfiguration config = new EventLogConfiguration(name); //looks useful but doesn't give me any of the info i'm looking for.
Console.WriteLine(name);
}
Run Code Online (Sandbox Code Playgroud) 我正在使用System.Diagnostics.Eventing.Reader.EventLogWatcher类挂钩安全事件日志,我正在观察2008服务器盒上的事件ID 4625,以查看传入的失败登录(特别是RDP).
日志捕获工作正常,我将结果转储到队列中以进行相关的后续处理.但是,有时捕获的日志会填充(解析)IPAddress数据字段,有时则不会.
我在观看服务器的同时运行windump,尝试从不同的服务器和操作系统风格中进行常规的RDP登录,我可以得出的唯一结论是版本差异问题,而且编码也不错.虽然我错了,LOL.
问题在于事件日志本身与这些连接有关.记录所有失败的RDP登录,并正确处理,但某些日志根本不记录失败连接的源IP地址.
一些较新的mstsc风格会不会导致远程事件日志不记录源IP地址?对于我对这个钩子服务器运行的任何其他2008服务器来说,这似乎都是正确的.到目前为止我尝试过的任何2003或XP机器都已正确记录.
如果您需要更多信息,请告诉我们.谢谢!
编辑
我是否需要做一些疯狂的事情 - 比如实施sharpPcap并将IP与事件日志相关联?= /.也许可以查询lsass(这不是通常写入安全日志的唯一内容)吗?
我试过了:
process.MainModule.FileName.Contains("x86")
Run Code Online (Sandbox Code Playgroud)
但它引发了x64进程的异常:
Win32Exception:只有部分ReadProcessMemory ou WriteProcessMemory请求完成
所以我正在编写一个监视由另一个开发人员编写的控制台应用程序的应用程序.控制台应用程序容易崩溃,因为它运行一整晚我需要我的应用程序重新启动它.
不幸的是,当控制台应用程序崩溃时,我得到的消息显示"blah已停止工作"以及一个显示关闭程序的按钮.
我正在使用System.Diagnostic.Process来启动控制台应用程序,但我无法确定控制台应用程序是否已崩溃,直到命中关闭程序按钮为止.Process.Responding始终为true(没有窗口句柄)Process.exited在触发关闭程序按钮之前不会被触发.
任何想法都会非常有用.
谢谢
我正在尝试使用通过Visual Studio for .NET 4.5创建的程序集在MonoDevelop 4.2.3中创建应用程序,但是出现以下警告:
/usr/lib/mono/4.5/Microsoft.Common.targets:警告:引用'System.Diagnostics.Tracing,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'未解决(ListenerBinTest)
当然,当我尝试运行该应用程序时,它会失败并显示此错误:
System.IO.FileNotFoundException: Could not load file or assembly 'System.Diagnostics.Tracing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.
at System.Threading.Tasks.Dataflow.TransformBlock`2[System.Net.Sockets.Socket,vtortola.WebSockets.WebSocketListener+WebSocketNegotiationResult]..ctor (System.Func`2 transform, System.Threading.Tasks.Dataflow.ExecutionDataflowBlockOptions dataflowBlockOptions) [0x00000] in <filename unknown>:0
at vtortola.WebSockets.WebSocketListener..ctor (System.Net.IPEndPoint endpoint, vtortola.WebSockets.WebSocketListenerOptions options) [0x00000] in <filename unknown>:0
at vtortola.WebSockets.WebSocketListener..ctor (System.Net.IPEndPoint endpoint) [0x00000] in <filename unknown>:0
at ListenerBinTest.MainClass.Main (System.String[] args) [0x00010] in /home/vtortola/ListenerBinTest/ListenerBinTest/Program.cs:12
Run Code Online (Sandbox Code Playgroud)
老实说,我没有使用与相关的任何东西System.Diagnostics.Tracing
,但是显然System.Threading.Tasks.Dataflow
会使用。
这是我的设置:
=== MonoDevelop ===
Version 4.2.3
Installation UUID: 2798c094-3f0b-42d7-afe4-2984107bea4e
Runtime: …
Run Code Online (Sandbox Code Playgroud) 据我所知,有两种方法可以在.NET中创建跟踪消息.
System.Diagnostics.Trace的静态方法:
Trace.WriteLine("Something happened");
Run Code Online (Sandbox Code Playgroud)System.Diagnostics.TraceSource的实例方法:
var ts = new TraceSource("TraceTest");
ts.TraceInformation("Something happened");
Run Code Online (Sandbox Code Playgroud)在我的app.config文件中,我可以为所有内容添加跟踪侦听器:
<system.diagnostics>
<trace>
<listeners>
...
</listeners>
</trace>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)
或者对于一个特定的跟踪源:
<system.diagnostics>
<sources>
<source name="...">
<listeners>
...
</listeners>
</source>
</sources>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)
我的问题
如果我使用第一种方法(System.Diagnostics.Trace的静态方法),使用哪个跟踪源名称?
我已经检查了System.Diagnostics.Trace的MSDN页面,但没有找到答案.
c# ×8
.net ×4
64-bit ×1
app-config ×1
encoding ×1
etw ×1
event-log ×1
event-viewer ×1
linq ×1
mono ×1
monodevelop ×1
performance ×1
process ×1
trace ×1
windows ×1