Ego*_*eux 6 symfony monolog docker
我有一个在 Docker 中运行的 PHP/Symfony 应用程序,它使用 Monolog 登录到 stdout/stderr。这一切都很好,除非在容器内运行 Symfony 控制台命令。
monolog:
handlers:
stdout:
type: filter
handler: stdout_unfiltered
max_level: notice
channels: ['!event']
stdout_unfiltered:
type: stream
level: debug
path: 'php://stdout'
stderr:
type: stream
level: warning
channels: ['!event']
path: 'php://stderr'
console:
type: console
channels: ['!console', '!doctrine', '!event']
process_psr_3_messages: false
Run Code Online (Sandbox Code Playgroud)
问题在于,无论何时执行命令,“stdout”、“stderr”和“console”处理程序都会记录到当前终端进程。这会导致控制台输出混乱,并且docker logs不包含日志条目:http : //i.imgur.com/yB1IKrR.png。
是否有一种简单的方法可以始终将日志输出发送到 php-fpm(或任何工作程序)进程?
记录到文件/proc/1/fd/1(或 fd/2)
monolog:
handlers:
...
stdout_unfiltered:
type: stream
level: debug
path: '/proc/1/fd/1'
stderr:
type: stream
level: warning
channels: ['!event']
path: '/proc/1/fd/2'
...
Run Code Online (Sandbox Code Playgroud)
也许您可以检查 this 指向的位置并重定向到那里 ( docker exec aContainer ls -l /proc/1/fd/2),但这可能会根据容器启动而改变。
不确定它是否理想,但它可以工作(当 symfony 有 /proc/1/fd/* 的写权限时)。
| 归档时间: |
|
| 查看次数: |
2455 次 |
| 最近记录: |