boost :: log add_file_log не пишет, если приложение закрывается с помощью CTRL_CLOSE_EVENT

Я на Windows 7, используя boost :: log v1.54 в консольном приложении. Я использую add_file_log () с вращением, которое работает нормально, пока моя функция main () завершается. Но если приложение завершается извне с помощью powershell CloseMainWindow (), файл журнала никогда не записывается.

Я установил обработчик элементов управления Windows с помощью SetConsoleCtrlHandler () и могу перехватывать CTRL_CLOSE_EVENT, но я не знаю, есть ли метод boost :: log, который я могу вызвать, чтобы заставить файл журнала писать перед выходом из приложения. У кого-нибудь есть решение для этого?

Спасибо,

  Rob

0

Решение

Две вещи, которые вы можете захотеть посмотреть. Следующее основано на моем опыте

1) Файл журнала существует, но он пуст. В этом случае используйте auto_flush для сброса журнала на диск при создании сообщений журнала. В противном случае вы можете получить пустой журнал, если недостаточно сообщений журнала для очистки при возникновении CTRL_CLOSE_EVENT.

2) Файл журнала завершается, но это не так, как вы думаете. В этом случае убедитесь, что файл журнала создан в том же каталоге, что и целевой каталог. Целевой каталог собирает файлы журнала, когда приемники закрыты. Если для ключевого слова file_name задано только имя файла, оно будет создано в рабочем каталоге, а не в целевом каталоге. Если приложение выходит без закрытия приемников, то файл не будет перемещен в целевой каталог.

НТН,

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector