【发布时间】:2011-12-05 00:23:43
【问题描述】:
我正在编写一些 Perl CGI 脚本,并使用Log4perl 登录到各种文件。我认为能够将特定(或各种)用户的活动跟踪到单独的日志文件可能很有用。我可以在我的会话例程中添加一个钩子,将用户 ID 填充到MDC,但我不知道有什么方法可以从filter 访问 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; }
我在进行会话查找后立即填充用户 ID,但我从未创建过 appUser.log 文件。我看不到任何错误。
【问题讨论】:
-
对不起...link
-
没关系,我一开始并没有调用appender。现在一切都很好,为混乱道歉!