Перенаправление вывода процесса в файл за дату
В настоящее время я перенаправляю стандартный вывод всех моих услуг (stdout
а также stderr
) к одному файлу, начиная с так:
java blablaargs &> service.out
SVCPID=$!
Тем не менее, этот файл становится довольно большим. Можно ли без изменения самой сервисной программы (возможно, с помощью какой-либо команды фильтра) разделить вывод по дням?
Примечание: "Использовать каркас логирования в Java" - это не тот дрои... ответ, который я ищу, иногда важный вывод просто stdout
вне моего контроля.
3 ответа
Вы должны настроить logrotate, чтобы сделать это для вас - это его работа.
Я бы предложил использовать системный журнал (для syslog-ng
Фильтр и вращающиеся возможности, например), особенно если вы уже используете его в своей системе.
Для того, чтобы поймать stdout
а также stderr
в системный журнал, вы можете направить вывод вашей программы в logger
например, например: (из https://blogs.oracle.com/chrisg/entry/redirecting_output_to_syslog)
my_script | logger -p local6.debug -t my_script 2>&1
увидеть человека (1) регистратор.
Взгляните на что-то вроде cronolog http://cronolog.org/
Он будет делать именно то, что вы просите, разбивая файлы журналов на основе шаблона, читая из STDIN.