Windows 8.1中的FileLoggingSession保存日志文件在哪里?

时间:2013-09-19 01:28:14

标签: windows-runtime windows-8.1

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);
    }

3 个答案:

答案 0 :(得分:0)

应通过LogFileGenerated事件(documentation):

提供

事件参数LogFileGeneratedEventArgsdocumentation)包含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;上使用OpenTraceProcessTraceCloseTrace方法。文件上传到您的服务器后。

答案 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);
        ...
    }