michaellukashov / Far-NetBox

SFTP/SCP/FTP/FTPS/WebDAV/S3 client for Far Manager 3 (http://farmanager.com/)
https://forum.farmanager.com/viewtopic.php?t=6317
GNU General Public License v2.0
155 stars 52 forks source link

Пара проблем в логгере #436

Closed ssvine closed 3 months ago

ssvine commented 3 months ago

Обнаружил две проблемы, когда использовал глобальный лог для локализации ошибок:

  1. Недостаточный размер буфера для форматирования сообщения в глобальном логгере. Так как в строке форматирования используется формат наподобие "%10s", то требуемый размер будет не меньше 10, что нужно учитывать при расчётах.
  2. Глобальный логгер перестаёт писать сообщения после завершения сессии, в которой использовался локальный логгер. Тут вкралась небольшая ошибка при рефакторинге (7cf217): в деструкторе TinyLog статическая переменная instance_ обнуляется. Поэтому как только локальный логгер удалился, он обнулит переменную глобального инстанса, теряя его. Если после этого что-нибудь написать в глобальный лог, то будет создан новый экземпляр логгера, который не связан с каким-либо файлом. Исправление простое - не обнулять instance_ в деструкторе TinyLog. Фактически instance_ будет уничтожен и обнулён в деструкторе TWinSCPPlugin, что обеспечивает необходимую глобальность.

Пулл реквест исправляет указанные проблемы.