я искал решение для пользовательского имени файла журнала. я получил решение, которое работало в проекте версии 5.6. но после этого значит больше 5,6 он не работает. Я пытаюсь использовать много решений, но не работает. каждый раз, когда имя файла генерируется laravel.log. но я хочу получить его как laravel- {vendor_code} - {date} .log
Я использовал решение, код которого ниже.
CustomLogFile.php
<?php
namespace App\Logging;
use Illuminate\Http\Request;
use Monolog\Handler\RotatingFileHandler;
class CustomLogFile
{
/**
* Customize the given logger instance.
*
* @param \Illuminate\Log\Logger $logger
* @return void
*/
public function __invoke($logger )
{
$code = 'NA';
$headers = apache_request_headers();
if( isset( $headers['DBAuth'] ))
{
$code = dnc($headers['DBAuth']) ;
}
elseif ( isset($_REQUEST['code']) )
{
$code = $_REQUEST['code'];
}
foreach ($logger->getHandlers() as $handler) {
if ($handler instanceof RotatingFileHandler) {
$sapi = php_sapi_name();
$handler->setFilenameFormat("{filename}-$code-{date}", 'Y-m-d');
}
}
}
}
Конфиг / logging.php
'default' => env('LOG_CHANNEL', 'stack'),
......
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['daily'],
'ignore_exceptions' => false,
],
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
],
'daily' => [
'driver' => 'daily',
'tap' => [App\Logging\CustomLogFile::class],
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
'days' => 14,
],
здесь этот код работает как мое условие в 5.6 v Laravel, но не более чем 5.6 v.
я пытаюсь проверить $ logger- ›getHandlers (). тогда я получаю массив stream, равный нулю. так может ли это быть причиной этого.