我在本地调试环境中引入了log4gphp,在本地可正常使用它来记录信息,但是一旦上传到服务器却怎么都调试不了,一直在提示:
LoggerPropertyConfigurator::doConfigure() cannot load log4php.properties configuration.如下:
找到提示这个错误的文件:log4php目录下的LoggerPropertyConfigurator.php,第319行($url的值就是:log4php.properties):
function doConfigure($url, &$repository)
{
$properties = @parse_ini_file($url);
if ($properties === false) {
LoggerLog::warn("LoggerPropertyConfigurator::doConfigure() cannot load '$url' configuration.");
return false;
}
return $this->doConfigureProperties($properties, $repository);
}
从这里可以看出应该是parse_ini_file函数没有正常执行,一般来说我们的log4php.properties文件内容基本上就是这样:每个赋值都是没有引号括起来的,
- log4php.rootLogger=DEBUG, A1
- log4php.appender.A1=LoggerAppenderRollingFile
- log4php.appender.A1.file=webdisk.log
- log4php.appender.A1.layout=LoggerLayoutTTCC
- log4php.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %C{1}:%M %p %m%n
- log4php.appender.A1.MaxFileSize=1024
- log4php.appender.A1.MaxBackupIndex=3
网上查了下大概是这样:
问题来由:我本地的开发环境中PHP的版本为5.3.13,而服务器的产品环境中PHP的版本为5.2.12.
在php.ini文件中,
所有的的变量赋值采用双引号引用
处理方式:
将log4php.properties文件中对变量赋值的单引号引用改为双引号引用,改为:
- log4php.rootLogger="DEBUG, A1"
- log4php.appender.A1="LoggerAppenderRollingFile"
- log4php.appender.A1.file="webdisk.log"
- log4php.appender.A1.layout="LoggerLayoutTTCC"
- log4php.appender.A1.layout.ConversionPattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %C{1}:%M %p %m%n"
- log4php.appender.A1.MaxFileSize="1024"
- log4php.appender.A1.MaxBackupIndex="3"
至此:问题解决!