4

我是一个相对较新的 PHP 程序员,我的背景是 Java。我的问题涉及尝试使用 Log4PHP 记录函数调用进入和退出。我遵循一个松散的 MVC 模式,其中我有呈现视图的 PHP 页面、充当控制器的 PHP 脚本和代表模型的 PHP 类。

这就是正在发生的事情:我有一个提交给 PHP 控制器的表单,然后它实例化一个 PHP 类。新创建的对象插入 MySQL,返回新的自动增量 ID。然后控制权传回控制器,控制器使用 header->location 转发到不同的 PHP 视图。最后,新的 PHP 视图对新创建的 ID 进行选择。

问题是在这个执行过程中,Log4PHP 只记录了查找;插入不是。以下是一些片段:

<appender name="myConsoleAppender" class="LoggerAppenderConsole" />   
<appender name="myLoggerAppenderDailyFile" class="LoggerAppenderDailyFile">
 <layout class="LoggerLayoutPattern">
       <param name="conversionPattern" value="%d{Y-m-d H:i:s} [%p] %c: %m (at %F line %L)%n" />
   </layout>
   <param name="file" value="file-%s.log" />
   <param name="datePattern" value="Y-m-d" />
</appender>
<logger name="merchant">
<appender_ref ref="myLoggerAppenderDailyFile" />
</logger>   
<root>
<level value="DEBUG" />
<appender_ref ref="myConsoleAppender" />
</root>
</configuration>

构造函数:

public function __construct() {
.
.
Logger::configure('config.xml');
$this->log = Logger::getLogger(__CLASS__);
}

两种方法:

public function insertMerchant() {
$this->log->debug("Inserting new Merchant");
.
.
$this->log->debug("Merchant Inserted; ID = $merchantId");
}

public function findMerchantByUserId($userId) {
$this->log->debug("Finding Merchant with userId = $userId");
.
.
$this->log->debug("Merchant found with userId = $userId");
}

正如我所提到的,只有对 findMerchantByUserId($userid) 的最后一次调用被记录到文件中。插入永远不会被记录,

提前感谢您的帮助。

4

0 回答 0