FileLoggingSession Класс

Определение

Представляет назначение зарегистрированных сообщений из экземпляров LoggingChannel .

public ref class FileLoggingSession sealed : IFileLoggingSession, IClosable
/// [Windows.Foundation.Metadata.Activatable(Windows.Foundation.Diagnostics.IFileLoggingSessionFactory, 65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class FileLoggingSession final : IFileLoggingSession, IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(Windows.Foundation.Diagnostics.IFileLoggingSessionFactory, 65536, "Windows.Foundation.UniversalApiContract")]
class FileLoggingSession final : IFileLoggingSession, IClosable
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Foundation.Diagnostics.IFileLoggingSessionFactory), 65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class FileLoggingSession : System.IDisposable, IFileLoggingSession
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Foundation.Diagnostics.IFileLoggingSessionFactory), 65536, "Windows.Foundation.UniversalApiContract")]
public sealed class FileLoggingSession : System.IDisposable, IFileLoggingSession
function FileLoggingSession(name)
Public NotInheritable Class FileLoggingSession
Implements IDisposable, IFileLoggingSession
Наследование
Object Platform::Object IInspectable FileLoggingSession
Атрибуты
Реализации

Требования к Windows

Семейство устройств
Windows 10 (появилось в 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (появилось в v1.0)

Комментарии

Используйте класс FileLoggingSession для непрерывного ведения журнала сообщений и данных в файл во время выполнения приложения. Файлы журналов можно просмотреть с помощью набора средств производительности Windows (WPT) и других служебных программ, таких как tracerpt.exe.

Добавьте экземпляры LoggingChannel в FileLoggingSession и вызовите методы экземпляра FileLoggingSession для удаления каналов, удаления и выполнения других операций. Количество каналов в настоящее время не ограничено.

Примечание

В Windows Server 2012 R2 и Windows 8.1 каждое приложение ограничено 4 активными каналами, а каналы должны иметь уникальные имена.

Класс FileLoggingSession отправляет зарегистрированные сообщения в файлы диска, когда буфер заполнен или пользователь вызывает CloseAndSaveToFileAsync. Класс FileLoggingSession использует последовательное ведение журнала, что означает, что все сообщения отправляются в файл диска и сохраняется последовательный журнал сообщений. Это отличается от класса LoggingSession , который отправляет зарегистрированные сообщения на диск по запросу, т. е. когда приложение обнаруживает проблему и сохраняет сообщения в памяти для анализа.

Используйте класс FileLoggingSession , если вы знаете, что все сообщения необходимо сохранить, как правило, в течение длительного периода времени, и когда приложение не может быть обремечено действиями по сохранению по запросу. Как и класс LoggingSession , экземпляры LoggingChannel добавляются в экземпляр FileLoggingSession , а экземпляр FileLoggingSession имеет методы для удаления каналов и удаления. Экземпляры FileLoggingSession инициализируются с помощью делегата для нового обратного вызова файла, который уведомляет приложение о смене файла журнала. Функция вызывает делегат, когда текущий внутренний файл журнала достигает емкости и создается новый файл для непрерывного последовательного ведения журнала. Обратный вызов делегата также можно вызвать в пределах приостановки или при удалении FileLoggingSession .

При вызове события LogFileGenerated приложение получает файл StorageFile , представляющий закрытый файл журнала. Приложение может пересылать файл журнала для обработки определенным приложением способом. После этого сеанс продолжает вести журнал в только что созданный и открытый текущий файл журнала. Когда этот файл журнала достигает емкости, делегат обратного вызова снова вызывается для нового файла, и процесс повторяется.

Завершив ведение журнала событий, вызовите метод CloseAndSaveToFileAsync , чтобы получить последний файл журнала, так как последний файл журнала может быть по-прежнему открыт, если он еще не достиг емкости. Вы также можете использовать CloseAndSaveToFileAsync , чтобы закрыть сеанс и получить доступ к последнему файлу журнала. Обратите внимание, что если последний файл журнала был пустым или если все файлы журнала уже были зарегистрированы методом LogFileGenerated , метод CloseAndSaveToFileAsync вернет значение NULL.

Файлы журналов создаются в папке ApplicationData\Logs .

Имя каждого файла журнала основано на имени сеанса и индексе. Индекс сбрасывается при каждом создании нового сеанса. Каждый раз, когда файл журнала достигает максимального размера, он закрывается, индекс увеличивается и открывается новый файл журнала с использованием нового индекса. (Как следствие, при каждом перезапуске приложения начинается перезапись файлов журнала, созданных предыдущим экземпляром приложения.)

Вы можете добавить обработчик для события LogFileGenerated , чтобы приложение уведомлялось при каждом закрытии файла журнала.

Если не использовать событие LogFileGenerated или метод CloseAndSaveToFileAsync , FileLoggingSession не будет удалять устаревшие файлы журнала (хотя новый сеанс может перезаписать файлы, созданные предыдущим сеансом). Ваше приложение отвечает за поиск и очистку файлов журнала по мере необходимости.

Перед предоставлением файла журнала приложению с помощью события LogFileGenerated или метода CloseAndSaveToFileAsync он будет переименован в специальное имя файла журнала. Всегда используется одно и то же имя файла журнала, поэтому новые журналы будут перезаписывать старые журналы. Таким образом, методы События LogFileGenerated и CloseAndSaveToFileAsync помогают предотвратить устаревание файлов журнала от использования места в папке ApplicationData.

FileLoggingSession закроет текущий файл журнала и запустит новый файл журнала, когда текущий файл журнала достигнет 256 КБ.

Конструкторы

FileLoggingSession(String)

Инициализирует новый экземпляр класса FileLoggingSession .

Свойства

Name

Возвращает имя сеанса ведения журнала.

Методы

AddLoggingChannel(ILoggingChannel)

Добавляет канал ведения журнала в текущий сеанс ведения журнала.

AddLoggingChannel(ILoggingChannel, LoggingLevel)

Добавляет канал ведения журнала в текущий сеанс ведения журнала. Канал ведения журнала принимает только события, уровень ведения журнала которых превышает указанный уровень ведения журнала.

Close()

Завершает текущий сеанс ведения журнала.

CloseAndSaveToFileAsync()

Завершает текущий сеанс ведения журнала и сохраняет его в файл.

Dispose()

Выполняет определяемые приложением задачи, связанные с удалением, высвобождением или сбросом неуправляемых ресурсов.

RemoveLoggingChannel(ILoggingChannel)

Удаляет указанный канал ведения журнала из текущего сеанса ведения журнала.

События

LogFileGenerated

Возникает при сохранении файла журнала.

Применяется к

См. также раздел