The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Перенаправления потоков для ротации логов"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"Перенаправления потоков для ротации логов"  +/
Сообщение от SergKam email(??) on 20-Янв-10, 17:18 
Непрерывно работающая программа создает лог перенаправлением своего стандартного вывода в файл.
Программа не моя. У меня как у админа естественно возникла проблема как сделать ротацию ее логов по крону, без перезапуска самой программы.Так как логи там после 2ГБ убивают эту прогу в core.
если через mv делать то новый файл лога не создается пока не перезапустить программу.
при копировании файла и выполнении echo >logfile.log размер файла не уменьшается(изза сброса буфера наверно).

Как обнулить файл открытый на запись?
Както можно это сделать системными средствами?
Если нет, что именно попросить сделать разработчика для организации ротации логов по cron.
(чтото самое простое).
И как это правильно сделать по феншую?

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Перенаправления потоков для ротации логов"  +/
Сообщение от Andrey Mitrofanov on 20-Янв-10, 18:39 
>создает лог перенаправлением своего стандартного вывода в файл.
>как сделать ротацию ее логов по крону, без перезапуска самой
>Как обнулить файл открытый на запись?
>Както можно это сделать системными средствами?

Не надо его обнулять. Пусти програму, которая умеет брать со stdin-а, писать в файл/log _и_ ротировать его по сигналу. На вскидку в голову приходит логгер из daemontools г-на djb. http://cr.yp.to/daemontools/multilog.html -- см.про SIGALARM. Наверняка то же самое умеют делать куууча других логгеров-демонизаторов или типа того.

>Если нет, что именно попросить сделать разработчика для организации ротации логов по
>cron.
>(чтото самое простое).

Ну, как, по сигналу закрывать лог, переименовывать его и создавать новый с тем же именем. Но тогда (если "внутри" програмы) -- со стдин-ом "придётся" расстаться.

>И как это правильно сделать по феншую?

tvoya_kryutaya_programka | logger
+
"kill -SIGALARM" или типа того -- в cron-е
(+ там же где-то собирать-паковать-обрабатывать "награбленное")

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "Перенаправления потоков для ротации логов"  +/
Сообщение от Pahanivo email(ok) on 20-Янв-10, 18:58 
>>создает лог перенаправлением своего стандартного вывода в файл.
>>как сделать ротацию ее логов по крону, без перезапуска самой
>>Как обнулить файл открытый на запись?
>>Както можно это сделать системными средствами?
>Не надо его обнулять. Пусти програму, которая умеет брать со stdin-а, писать
>в файл/log _и_ ротировать его по сигналу. На вскидку в голову
>приходит логгер из daemontools г-на djb. http://cr.yp.to/daemontools/multilog.html -- см.про SIGALARM. Наверняка
>то же самое умеют делать куууча других логгеров-демонизаторов или типа того.

я бы не советовал заморачиваться на этот раритет ))
у апача есть тулза нето logrotate, нето rotatelog  - приклеивается на stdout
а вообще проблема решается парой строчек на перле - нюхаем stdin, считаем кол-во строк, далее ротация если кол-во превысило порог.

>>Если нет, что именно попросить сделать разработчика для организации ротации логов по
>>cron.
>>(чтото самое простое).
>
>Ну, как, по сигналу закрывать лог, переименовывать его и создавать новый с
>тем же именем. Но тогда (если "внутри" програмы) -- со стдин-ом
>"придётся" расстаться.

например в апаче по "kill HUP" просто происходит close-open текущего файла
так гораздо удобнее, пользовательно сам решает че делать с полученным логом, а не разработчик который поленился и сделал какуюнибудь нееудобную шнягу
>>И как это правильно сделать по феншую?
>
>tvoya_kryutaya_programka | logger
> +
>"kill -SIGALARM" или типа того -- в cron-е
>(+ там же где-то собирать-паковать-обрабатывать "награбленное")

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "Перенаправления потоков для ротации логов"  +/
Сообщение от Ы on 20-Янв-10, 19:33 
>>>создает лог перенаправлением своего стандартного вывода в файл.

Всё бы хорошо, но вот я понял что программа сама, внутри себя перенаправляет stdout в файл. Тогда внешние логгеры обломятся ...
Аффтар! Объясни тщательнее ...


А - да! На вопрос как правильно - дык это целая наука :) Я к примеру не люблю когда все что шло на стдаут - уходит в лог. Как по мне для лога нужно свой хандлер открыть. Если надо - могу объяснить почему.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "Перенаправления потоков для ротации логов"  +/
Сообщение от SergKam email(??) on 20-Янв-10, 19:50 
>>>>создает лог перенаправлением своего стандартного вывода в файл.
>Всё бы хорошо, но вот я понял что программа сама, внутри себя
>перенаправляет stdout в файл. Тогда внешние логгеры обломятся ...

+1
именно так. там чтото типа freopen(stdin..... и freopen(stderr
создают два отдельных файла.


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "Перенаправления потоков для ротации логов"  +/
Сообщение от Артур (??) on 20-Янв-10, 19:45 
Может на то место подсунуть fifo?
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру