让我们说我正在编写一个全局logData方法,该方法想要写入一个与运行它的php同名的日志文件,但扩展名为.log。
我在父php中包含此日志记录,目的是让它始终写入任何*父文件名的日志文件(而不是它所在的tools.php lib) )。
所以,我有 /some/arbitrary/directory/parent.php
调用
include(" /path/to/my/php/libs/tools.php");
但是当我在tools.php中运行我的日志记录方法时,它会记录到一个名为
的文件中/path/to/my/php/libs/tools.php.log
而不是 /some/arbitrary/directory/parent.php.log(这就是我喜欢的)。我正在使用__FILE__
这样做(可能与其意图一样)。是否有获取父文件名的命令,以便我可以按照我的意图使其工作?或者我是否必须将 FILE 作为参数从父php传递到我的方法中以使其写入正确的输出文件?
TIA
答案 0 :(得分:4)
您可以使用$ _SERVER [“SCRIPT_FILENAME”]
答案 1 :(得分:2)
debug_backtrace()将为您提供所需的信息。
答案 2 :(得分:0)
您需要将__FILE__
传递给日志类。
类似的东西:
// file:/some/arbitrary/directory/parent.php
$logger = new Logger(__FILE__);
// file:/path/to/my/php/libs/tools.ph
public function __construct($file) {
// But it is not good idea to save log file same with php files.
$this->log_path = $file.'.log';
}