Перенаправление вывода процесса в файл за дату

В настоящее время я перенаправляю стандартный вывод всех моих услуг (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.

Другие вопросы по тегам