Pregunta

Estoy escribiendo algunos scripts CGI de Perl, y estoy usando Log4perl Para registrar varios archivos. Pensé que podría ser útil poder rastrear las actividades de un usuario particular (o varias) a un archivo de registro separado. Puedo poner un gancho en mi rutina de sesión para meter el IDid en el MDC, pero no sé de ninguna forma de acceder al MDC desde un filtrar. Hasta donde yo sé, el MDC solo se usa para la creación de patrones.

¿Es esto factible con log4perl?

Por sugerencia a continuación agregué un filtro en mi archivo de configuración, pero todavía no funciona:

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; }

Relleno el ID de usuario tan pronto como realice la búsqueda de sesión, pero nunca obtengo un archivo AppUser.log creado. No aparecen errores que pueda ver.

¿Fue útil?

Solución

¿No puedes hacer?

my $value   = Log::Log4perl::MDC->get($key);   # for 1 value, or
my $hashref = Log::Log4perl::MDC->get_context; # for the whole context
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top