登录Symfony和云ob娱乐下载ob直播app
在过去几年中,应用程序记录消息的方式发生了变化。使用文件是存储日志的常用方法,但是使用云(读取容器、Docker等),使用ob直播appstderr
建议将日志流化。
您知道您不需要Monolog来捕获应用程序日志吗?从Symfoob娱乐下载ny 3.4开始,就有了Symfony HttpKernel组件默认的PSR3日志记录器将所有内容都记录下来stderr
,无需任何其他软件包的帮助。该特性是随着Flex的引入而添加的,因为新的应用程序开始时不需要额外的包,因此也不需要记录器。通过“stderr”登录是考虑到容器的选择。
默认情况下,新的Symfony应ob娱乐下载用程序登录stderr
通过默认的HttpKernel日志。对于小型应用程序来说,这可能已经足够了;例如,我在fabbot和Twig的网站上使用它。
使用Monolog仍然非常有用,因为它提供了更多的选项和可配置性。但由于历史原因,可能是专用服务器上的实用性,Monolog默认配方仍然使用存储日志的文件(% kernel.logs_dir % / % kernel.environment % . log
).Symfob娱乐下载ony内核类甚至有一个getLogDir ()
方法,在内核接口中定义。
这在开发服务器上可能是有意义的(稍后会详细介绍),但在生产中,stderr
是一个更好的选择,特别是当使用Docker, SymfonyCloud, lambdas,…ob娱乐下载ob直播app所以,我现在推荐使用php: / / stderr
独白的路径:
1 2 3 4 5 6 7 8 9 10 11
——/ config /包/刺激/ monolog.yaml+ + + b / config /包/刺激/ monolog.yaml@@ -11,7 +11,7 @@ monolog: members: [nested, buffer] nested:类型:流- path: "%kernel.logs_dir%/%kernel.environment%.log"+路径:php://stderr级别:调试缓冲区:类型:缓冲区
在ob娱乐下载Sob直播appymfonyCloud,使用stderr
也有一些额外的好处(同样适用于大多数容器化平台)。即使最后,日志发送到stderr
在文件中结束:app.log
.您可能会想,这怎么可能比使用专用文件更好呢?首先,app.log
文件由SymfonyCloud“管理”:它ob娱乐下载会ob直播app自动旋转(不再有日志文件无限增长,直到它填满您的磁盘)app.log
文件存储在本地快速磁盘,而不是网络磁盘(在存储文件时使用var / log /
).它也可能更便宜,因为您不会用临时日志“浪费”网络磁盘容量。
使用stderr
这也意味着Symfony少了一个可写目录(不要忘记登录弃用通知ob娱乐下载stderr
并且检查没有第三方捆绑包写入getLogDir ()
目录)。
那么发展呢?你能用stderr
吗?答案是肯定的,我建议你也这样做。
如果您正在使用PHP-FPM,则需要将其配置为将日志“转发”到FPM日志(FPM日志可以流式传输)stderr
!):
1 2 3
;确保worker stdout和stderr被发送到主错误日志catch_workers_output=是的decorate_workers_output=没有(7.3+在ly)
如果您正在使用Symfony CLob娱乐下载I,这是PHP- fpm的默认配置,所有PHP版本的日志都会自动“未修饰”。
记录快乐!
评论
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。
为什么一直stderr ?为什么不默认stdout和使用stderr错误级别和更多?
我刚刚尝试了一下,我得到了以下错误:
[错误]6#6:*1上游读取响应报头时发送了太大的报头"
所以它仍然是真的,这样的日志记录一切在stderr?
这不是symfoob娱乐下载ny的错误,而是一个PHP短,因为它看起来。
以下是错误报告:https://bugs.php.net/bug.php?id=73886
同样来自官方docker lib: https://github.com/docker-library/php/issues/358#issuecomment-271033464
例如,当来自stderr时,GCP日志收集器将把日志标记为错误,默认情况下,这将导致不必要的警告,以防你想记录更多的比特,而只是来自php的错误。(甚至在生产中也可能发生;))