Laravel 5.5 - 如何通过远程IP更改Laravel日志文件名?

时间:2017-11-09 14:16:47

标签: php logging laravel-5.5

我正在构建一个API PHP后端,我想为连接到我的API的每个IP创建一个日志文件。

例如:

20171108__192.168.1.2__myapp.log
20171108__192.168.1.3__myapp.log
20171109__192.168.1.2__myapp.log

有人可以帮我解决这个问题吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

Laravel的日志记录使用Seldaek/monolog,因此您可以根据用户的IP为每个请求创建一个新的Logger实例。

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

/**
 * The function inside your controller.
 *
 * @param \Illuminate\Http\Request $request The request object.
 */
public function endpoint(Request $request){

    // Create the logger
    $logger = new Logger('my_logger');

    // Generate the file name (20171109__192.168.1.2__myapp.log)
    $filename = sprintf('%s/logs/%s__%s__myapp.log', storage_path(), date('Ymd'), $request->ip());

    // Add the handler
    $logger->pushHandler(new StreamHandler($filename, Logger::DEBUG));

    // Use your logger
    $logger->info('My logger is ready');

}