Ролловер файла журнала при входе в файл с помощью панели инструментов Google для Mac - PullRequest
0 голосов
/ 11 сентября 2009

Я использую набор инструментов Google для Mac с GTMLogger для ведения журнала в файл в приложении, над которым я работаю.

Я пытаюсь решить, как выполнить перенос файла журнала, когда файл становится достаточно большим.

В идеале я бы хотел что-то вроде немедленного ролловера log4net, когда файл журнала достигает 1 мегабайта с максимум 11 файлами журнала одновременно, но я не вижу встроенного способа сделать это, и мне интересно, если я пытаюсь добавить это больше проблем, чем стоит.

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

Что будет моим лучшим вариантом здесь?

1 Ответ

1 голос
/ 13 сентября 2009

Вы беспокоитесь, что проверки только при запуске может быть недостаточно часто. Итак, добавьте таймер в runloop при запуске, чтобы запустить проверку журнала немедленно и один раз в день или два после этого. Если вы нацеливаетесь, используя не более 1 МБ за раз, даже если вы некоторое время превышаете лимит, это, скорее всего, не будет иметь большого значения.

Вы также можете просто посмотреть, как log4net реализует эту функцию: это так же просто, как перехватить каждый Append(), чтобы проверить, соблюдаются ли ограничения по размеру / дате, и настроить файл, в который записывается файл, если необходимо. См. RollingFileAppender исходный код для получения дополнительной информации; начать с AdjustFileBeforeAppend(), а затем проверить RollOverSize(). Это Apache: используйте источник!

...