php - symfony 4 - 更改记录器输出路径
问题描述
我在生产环境中收到错误 500,所以我花了很多时间来搜索显示错误的位置。我发现使用logger的 symfony 日志错误默认情况下将输出发送到 stderr,因此在我的情况下使用 apache 的错误日志。我想向 symfony 发送消息env.log
(例如var/log/dev.log
和var/log/prod.log
)
文档说:
也可以通过将适当的参数传递给 Logger 的构造函数来更改最低日志级别、默认输出和日志格式。为此,请覆盖“记录器”服务定义。
但是我不知道如何更改记录器的输出,出于测试目的,我vendor/symfony/http-kernel/Log/Logger.php
成功地更改了记录器构造,如下所示:
public function __construct(string $minLevel = null, $output = 'abspath/to/project/var/log/dev.log', callable $formatter = null)
但我无法编辑供应商目录中的文件。
那么我如何覆盖“记录器”服务定义?
解决方案
不要编辑供应商文件。这些由作曲家包含,并在每次安装/更新时被覆盖。
如果要更改日志路径,可以使用 monolog 和config
composer require symfony/monolog-bundle
monolog:
handlers:
# this "file_log" key could be anything
file_log:
type: stream
# log to var/log/(environment).log
path: "%kernel.logs_dir%/%kernel.environment%.log" #change path here
# log *all* messages (debug is lowest level)
level: debug
syslog_handler:
type: syslog
# log error-level messages and higher
level: error
推荐阅读
- ios - 如果 textfield 为空,则将边框设置为红色,如果我们输入文本,则删除红色边框
- google-apps-script - 增加 AppsScript 的 6 分钟执行时间限制
- cypress - 使用柏树从截获的身体中保存价值
- java - 如何使用 Netflix DGS graphql-dgs-extended-scalars JSON 标量(java/spring-boot,maven)?
- php - Google Workspace、服务帐户和 Google Drive API File Watch Channels - 使用模拟的正确方法?
- java - 使用拆分和替换方法替换值的位置
- ios - Swift Package Manager - 发布方案崩溃
- docker - Raspberry Pi 4 上 Docker 内的 CEC 客户端
- angular - 在 Angular 中使用“ngx-datatable”迭代 Firestore 数据
- netcdf - 通过nco将不同维度大小的netCDF文件合并为一个文件