xash3d-fwgs
xash3d-fwgs copied to clipboard
Логирование в движке
Есть идеи насчет переделки логов, в том числе, чтобы они не терялись при повторных запусках движка, например через custom game:
- Записывать логи вида engine$timestamp.log. Так у нас будут логи с временной меткой на каждый запуск движка.
- Записывать логи в $TEMP.
Обычно логи удаляются из $TEMP при перезагрузке системы и на *nix это обычно
/tmp
и/var/tmp
- Записывать логи вида engine$number.log. При этом engine0.log - свежий лог, лог с наибольшим номером - самый старый и имеем лимит на кол-во файлов по дефолту допустим 4 или 5, максимум - 10.
- Записывать логи на *nix в
/var/log
. Там обычно лежат все логи. - В случае с выделенным сервером запускать движок как сервис systemd или rc.d и писать логи в syslog. Может быть удобно на VPS.
- Не писать в логи колоркоды. Не приятно глазу.
- Продолжать запись в тот же лог при выборе мода через custom game.
Во-первых, через Custom Game логфайл должен переоткрываться, а не записываться заново. Увы, я это сломал с переходом на execve, но это я ещё буду править, ибо текущий механизм меня не устраивает от слова совсем.
Во-вторых, мне кажется настолько носиться с логами совершенно не обязательно. Главное, что они пишутся в нужном нам объёме (хотя порой юзеров все равно надо просить перезапускать движок с -dev повыше, но это нормально когда уровень вербозности контроллируется).
Change Game теперь снова переоткрывает существующий лог.
Можно кваром сделать расширенное логирование, либо отдельный ключ вместо -log. Рядовому пользователю, конечно, одного файла лога должно хватать. А для тестирования могло бы пригодиться.
Можно и аргумент к log.
Нет у log аргумента -- пишет в engine.log. Есть -- пишет в <аргумент>, делает ротацию и пишет в новый файл. Как сервера в Linux: nginx.log -> nginx.log.2 -> nginx.log.3.gz -> nginx.log.4.gz и так далее.