#c# #.net #etl
#c# #.net #etl
Вопрос:
Как мне читать .Файлы ETL в .Net? Я хочу увидеть свой etl-файл в виде списка, но я не могу проанализировать содержимое файла, поскольку это не ascii.
Ответ №1:
Неважно, я выяснил это с помощью различных поисковых запросов Google. вот как я это сделал:
//Init
System.Diagnostics.Process worker = new System.Diagnostics.Process();
//Start logging
worker.StartInfo.FileName="logman";
worker.StartInfo.Arguments="start MyTcpipLog -p Microsoft-Windows-TCPIP -ets";
worker.Start();
worker.WaitForExit();
//Do nothing for 30 seconds
DateTime start = DateTime.Now;
while(DateTime.Now.Subtract(start).Seconds<5){}
//Stop logging
worker.StartInfo.FileName="logman";
worker.StartInfo.Arguments="stop MyTcpipLog -ets";
worker.Start();
worker.WaitForExit();
//Convert .etl to .csv
worker.StartInfo.FileName="tracerpt";
worker.StartInfo.Arguments = """ System.IO.Path.GetDirectoryName(Application.ExecutablePath) "\MyTcpipLog.etl" -o "" System.IO.Path.GetDirectoryName(Application.ExecutablePath) "\MyTcpipLog.csv"";
worker.Start();
worker.WaitForExit();
//Load CSV into memory
// create reader amp; open file
System.IO.TextReader tr = new System.IO.StreamReader("MyTcpipLog.csv");
string data = tr.ReadToEnd();
tr.Close();
//Delete CSV
System.IO.File.Delete("MyTcpipLog.etl");
System.IO.File.Delete("MyTcpipLog.csv");
Комментарии:
1. примет это как мой ответ, когда SO позволит мне (говорит, что мне нужно подождать 2 дня)
2. кстати, на самом деле это не csv, больше похоже на xml, что лучше : D
Ответ №2:
Вероятно, вы могли бы использовать P / Invoke и функции WinAPI OpenTrace и ProcessTrace. Смотрите MSDN для получения некоторого примера кода на C.
Комментарии:
1. P / Invoke позволяет вызывать функции Win32 из . СЕТЕВОЙ код. Примеры покажут, какие функции вам нужно будет вызвать…