我正在使用xml配置log4php。下面是我的配置:
<appender name="mainAppender" class="LoggerAppenderDailyFile">
<layout class="LoggerLayoutPattern">
<param name="conversionPattern" value="%d{Y-m-d H:i:s.u T P} [%logger] [%level],[%method,%location] %message;%ex%newline" />
</layout>
<param name="file" value=".././logs/main_log-%s.log" />
<param name="datePattern" value="Y-m-d" />
</appender>
<logger name="MainLogger">
<appender_ref ref="mainAppender" />
</logger>
<root>
<level value="TRACE" />
<appender_ref ref="mainAppender" />
</root>
我希望日志始终存储在同一目录中,但如果我调用
Logger::getLogger('MyLogger');在不同的位置。如何获取XML中的父目录?我在想像这样的东西:
<param name="file" value=dirname('/').".././logs/main_log-%s.log" />这当然是行不通的。通常在php中,为了避免这个问题,我使用:
include_once dirname('/').'.././libs/log4php/Logger.php' ;谢谢你的帮忙
发布于 2015-04-17 08:04:02
您可以(也许应该)为Log4PHP使用基于PHP数组的配置。这允许您使用动态代码来创建配置。
顺便说一句:有一个神奇的常量__DIR__,它包含当前PHP文件所在的目录。同时,__FILE__包含当前PHP文件的文件名。dirname('/')技巧应该不起作用-它将输出字符串"/" -将其与以"..“开头的路径组合在一起将导致尝试超出根目录的一个级别-这是根目录。
访问路径"."也是无用的,因为点是“当前目录”的同义词。路径中间的一个点不会通向任何地方,它将停留在原来的位置。
所以dirname('/').'.././libs/log4php/Logger.php'等同于"/.././libs/log4php/Logger.php",它等同于"/libs/log4php/Logger.php"。如果你的文件不小心在那里,你可能会误解你的代码是“工作的”。
https://stackoverflow.com/questions/29631268
复制相似问题