You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony5.4+Monolog3.8:CitiesController日志未写入指定文件问题

解决CitiesController日志未写入指定文件的问题

1. 确保控制器使用指定通道的日志器

默认注入的logger服务对应main通道,要写入cities_controller通道,得用对应通道的日志器:

构造函数注入方式

在CitiesController里注入专属日志器,Symfony会自动识别monolog.logger.cities_controller服务:

// src/Controller/CitiesController.php
namespace App\Controller;

use Psr\Log\LoggerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class CitiesController extends AbstractController
{
    private $logger;

    public function __construct(LoggerInterface $citiesControllerLogger)
    {
        $this->logger = $citiesControllerLogger;
    }

    #[Route('/cities', name: 'app_cities')]
    public function index(): Response
    {
        $this->logger->info('处理城市列表请求');
        return $this->render('cities/index.html.twig');
    }
}

直接调用指定通道日志器

如果不想修改构造函数,也可以直接获取对应服务:

$this->get('monolog.logger.cities_controller')->info('处理城市列表请求');

2. 调整配置避免日志重复输出

当前main处理器的channels是["!event"],会处理包括cities_controller在内的所有非event通道日志,导致日志同时出现在dev.log和目标文件。若想让日志仅写入指定文件,给main处理器添加排除规则:

when@dev:
    monolog:
        handlers:
            main:
                type: stream
                path: "%kernel.logs_dir%/%kernel.environment%.log"
                level: debug
                channels: ["!event", "!cities_controller"] # 新增排除cities_controller
            cities_controller_log:
                type: stream
                path: "%kernel.logs_dir%/CitiesController.log"
                level: debug
                channels: ['cities_controller']
            # 其他处理器配置保持不变

3. 验证配置生效

  • 清除缓存:执行php bin/console cache:clear
  • 访问CitiesController的路由触发日志
  • 检查var/logs/CitiesController.log是否生成并包含日志内容

若仍未生成,排查以下点:

  • 确认var/logs目录有写入权限
  • 确保调用的日志方法(如info、debug)级别不低于配置的level: debug

内容的提问来源于stack exchange,提问作者Nadir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:01:14