Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > log4perl


Автор: bronislav 29.8.2008, 12:32
кусок конфига:
Код

log4perl.appender.userlog = Log::Log4perl::Appender::File
log4perl.appender.userlog.filename = d:/file/exportlog/userlog.txt
log4perl.appender.userlog.mode = append
log4perl.appender.userlog.layout = SimpleLayout


Как можно на этапе выполнения скрипта переопределить имя файла для лога?

Автор: gcc 29.8.2008, 13:46
Код

split /=/
 ?

Автор: bronislav 29.8.2008, 13:56
gcc, мне не надо менять конфигурационный файл на этапе выполнения.

Или может как-то можно заставить log4perl распозновать переменные в конфигурации.

В общем проблема такая:
Есть общий лог, куда сыпятся ошибки
А есть лог, куда пишется другая информация по ходу выполнения скрипта. Так вот этот лог отдельный для каждого запустившего скрипт.
Как это сделать?

Автор: sir_nuf_nuf 29.8.2008, 14:19
bronislav, Я так понимаю, что каждый запущенный экземпляр скрипта заново считывает конфиг файл ?
но вам хотелось бы, что бы для каждого экземпляра скрипта был свой файл ?

Примитивное решение:
Парсер конфига для Log4perl умеет делать интерполяцию переменных .. вот только не помню всех perl переменных или только переменных окружения.

попробуйте так:

приписываем pid процесса к имени лога
Код

#in config
log4perl.appender.userlog.filename = d:/file/exportlog/userlog.txt.$$


если не поможет тогда:

Код

#in script
$ENV{MY_PID} = $$;


Код

#in config
log4perl.appender.userlog.filename = d:/file/exportlog/userlog.txt.${MY_PID}

Автор: bronislav 29.8.2008, 15:50
sir_nuf_nuf
уже разобрался

действительно можно использовать только переменные окружения

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)