Я пишу некоторые сценарии Perl CGI и использую Log4perl для входа в различные файлы. Я подумал, что может быть полезно иметь возможность отслеживать действия конкретного (или различных) пользователей в отдельном файле журнала. Я могу добавить хук в мою подпрограмму для вставки идентификатора пользователя в MDC , но я не знаю ни одного способа доступа к MDC из фильтра . Насколько я знаю, MDC используется только для создания шаблонов.
Это возможно с Log4perl?
В соответствии с предложенным ниже предложением я добавил фильтр в файл конфигурации, но он все еще не работает:
log4perl.appender.User = Log::Log4perl::Appender::File
log4perl.appender.User.filename = /data/wwwwii/logs/appUser.log
log4perl.appender.User.syswrite = 1
log4perl.appender.User.Filter = User
log4perl.appender.User.layout = PatternLayout
log4perl.appender.User.layout.ConversionPattern=%p{1} %d{ISO8601}Z [%03r] %15X{remoteAddr}/%05P %M %L --> %m%n
log4perl.filter.User = sub { Log::Log4perl::MDC->get('userId') == 12; }
Я заполняю идентификатор пользователя, как только выполняю поиск сеанса, но мне никогда не удается создать файл appUser.log. Нет ошибок, которые я вижу.