LINUX.ORG.RU

Логирование консоли игрового сервера


0

1

Есть игровой сервер. Запускается бинарником, который весит пока сервер работает и постоянно выводит разную информацию в консоль. Нужно записывать логи этого сервера. Банально ./server_start > log.txt не подходит, потому что размер лога доходит до 10ГБ, и это очень неудобно, не говоря про расход места. Как можно ограничить размер этого файла логов или какие есть варианты?

PS: сори за неграмотность

выяснить, как заставить сервер переоткрыть лог файл, или написать обертку, которая по сигналу будет это делать.
что-то типа ./server_start | logger_prog
на сами логи натравить logrotate

aol ★★★★★ ()
Ответ на: комментарий от vmart333

запусти его через screen, тогда войдя через ssh можно подключиться к сессии screen, а в ней работает твой сервак

aol ★★★★★ ()
Ответ на: комментарий от aol

Ясно. А можно как-то запускать по аналогии ./start > log.txt, только чтобы в этот файл писались логи пока размер файла не достинг 10 mb?

vmart333 ()
Ответ на: комментарий от vmart333

тут проблема вот в чем: если ты удалишь лог, то в него больше писаться не будет. нормальные демоны умеют по сигналу, например, USR1 переоткрывать лог, чем активно пользуется logrotate.

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

aol ★★★★★ ()
Ответ на: комментарий от aol

Через консоль сервера похоже нельзя никак переоткрыть этот файл. Там вообще нет функции логирования консоли. Но нужно по сути только первые несколько строк, которые идут после запуска сервера, чтобы в случае ошибок, человек мог удаленно посмотреть в чем дело. А дальнейшие игровые логи не нужны. А по скольку в консоли сервера довольно много логов, за сутки набигает файл размером несколько ГБ. И винт жалко, постоянно идет запись активная...

vmart333 ()
Ответ на: комментарий от vmart333

ну, так если надо несколько строк, удаляй лог, как только точно известно, что запустился твой сервак. например,

./start > log.txt &
sleep 2m
cp log.txt log.$(date +%F_%T)
rm log.txt

будут у тебя логи за первые две минуты

только надо уточнить, будет ли на диск писаться после удаления файла.. ведь флеш так временные файлы от пользователя прятал - открывал, а потом без закрытия дескриптора удалял. и всё, в ФС не видно, а работать с дескриптором можно.

aol ★★★★★ ()
Ответ на: комментарий от vmart333

хотя может и по другой причине. Там еще есть логи от самого сервера...

vmart333 ()

Что за игровой сервер? Может там возможно настроить так, что-бы не всё подряд в логи выводить?

Или в логи писать только то, что действительно важно:
./server_start | grep «шаблон_важных_данных» >log.txt

DiMoN ★★★ ()
Ответ на: комментарий от DiMoN

Сервер по Killing Floor. ./ucc-bin - бинарник. По шаблону врядли получится, там вначале много разного текста после загрузки.

vmart333 ()
Ответ на: комментарий от aol

будет ли на диск писаться после удаления файла.

Если в момент удаления файл был открыт, то будет, пока файл не закроют. В случае перенаправления выхлопа сервера напрямую в этот файл — пока сервер не закроет stdout/stderr, что обычно случается только при завершении процесса.

INFOMAN ★★★★★ ()
Ответ на: комментарий от INFOMAN

А каким образом можно записать в файл только тот кусок логов, который идет сразу после запуска сервера, а остальное не писать и не забивать винт?

vmart333 ()
Ответ на: комментарий от vmart333

записать в файл только тот кусок логов, который идет сразу после запуска сервера, а остальное не писать и не забивать винт

./ucc-bin 2>&1 | ( head -n +20; cat > /dev/null ) > ./server.log
Запишет первые 20 строк в файл "./server.log", остальное проигнорирует.

./ucc-bin log=./server.log
Будет писать логи в указанный файл

DiMoN ★★★ ()

aol тебе хороший своет дал, далее RTFM, например, man logger :-)

ну и DiMoN также ценно посоветовал. остаётся скрестить 2 этих подхода :)

mumpster ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.