我的系统已经有了一个简单的审计跟踪。但是我的教授想添加用户为审计跟踪所做的事情。我什至无法想象该怎么做。我发现 log4php http://logging.apache.org/log4php/index.html 我了解到它每次访问该站点都会生成一个文本文件。但是我如何将它合并到我已经在 mysql 中的表中并填写我页面中的活动列?
1 回答
您的表无法存储此信息。我看到登录和注销时间戳的列,以及带有“活动”的内容,但您将生成的数据将是每个登录会话的多个活动。
此外,审计跟踪通常不会存储在可以轻松更改的系统中。
除非您想编写自己的附加程序,否则 Log4PHP 中包含的附加程序如下所述:https ://logging.apache.org/log4php/docs/appenders/pdo.html
它详细介绍了如何定义存储表:
timestamp DATETIME
logger VARCHAR
level VARCHAR
message VARCHAR
thread VARCHAR
file VARCHAR
line VARCHAR
每当您觉得您的代码应该在审核日志中生成一个条目时,您可能会获取审核记录器对象并向其发送消息:
Logger::get('audit')->info('Stuff happened');
这将创建一条日志消息,其中包含数据库所需的所有信息。此外,您可以使用 MDC 功能:您可以设置可能添加到日志消息中的永久信息。MDC 是“映射诊断上下文”的缩写,可以将“当前用户”等值添加到消息中。
但这只有在您配置包含此 MDC 值的正确日志消息格式时才会发生。配置可能通过 LoggerLayoutPattern 进行,有关详细信息,请参阅https://logging.apache.org/log4php/docs/layouts/pattern.html。
底线:如果您到目前为止还没有将 Log4PHP 用于通用应用程序日志记录,我宁愿不为审计日志记录添加 Log4PHP。它是一个功能强大的工具,但我发现在尝试使其完美适合您当前的用例时存在许多问题。如果您自己进行审计日志记录,对您来说似乎更容易,因为您可以在数据库中包含您需要的所有信息。