Windows 8.1引入了FileLoggingSession类来将消息记录到文件中。文档说:
FileLoggingSession类将记录的消息发送到磁盘文件 他们被记录了。 FileLoggingSession类使用顺序日志记录, 这意味着所有消息都被发送到磁盘文件,并且 保留消息的连续历史记录。这不同于 LoggingSession类,按需将已记录的消息发送到磁盘, 当有问题和直接的历史时,就会发生这种情况 需要内存中的消息进行分析。
但我找不到日志文件。我在Log-MySession-1.etl
中找到了LocalState/Logs
文件,但它只有1kb,似乎不包含日志。这是我写的一些测试代码:
FileLoggingSession loggingSession;
LoggingChannel loggingChannel;
loggingSession = new FileLoggingSession("MySession");
loggingChannel = new LoggingChannel("MyChannel");
loggingSession.AddLoggingChannel(loggingChannel);
for (int i = 0; i < 1000; i++)
{
loggingChannel.LogMessage("Test message: " + i);
}
答案 0 :(得分:0)
应通过LogFileGenerated
事件(documentation):
事件参数LogFileGeneratedEventArgs
(documentation)包含File
属性。
答案 1 :(得分:0)
&#34; .etl&#34; file包含二进制格式的日志。 在命令提示符下使用以下命令以XML格式提取日志:
c:\ tracerpt.exe my_etl_file_name.etl -of XML -o readable_logs.xml
您可以选择在收到日志创建事件后从代码中调用此方法。 C ++ / PInvoke的另一个选择是在&#34; .etl&#34;上使用OpenTrace,ProcessTrace和CloseTrace方法。文件上传到您的服务器后。
答案 2 :(得分:0)
进入这个。在创建FileLoggingSession钩子后,LogFileGenerated事件处理程序。然后在你的事件处理程序方法中转出args.File.Path。
public FileLoggingHelper( ...)
{
m_fileLoggingSession = new FileLoggingSession( "mylogsession" );
m_fileLoggingSession.LogFileGenerated += FileLoggingSession_LogFileGenerated;
}
private void FileLoggingSession_LogFileGenerated(IFileLoggingSession sender, LogFileGeneratedEventArgs args)
{
System.Diagnostics.Debug.WriteLine( "generated " + args.File.Path);
...
}