我使用fosrestBundle和monolog logger来创建自定义日志。 我在config_dev.yml中添加了这个conf:
monolog:
handlers:
main:
type: fingers_crossed
action_level: error
handler: nested
nested:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
console:
type: console
myCustomLog:
type: stream
path: "%kernel.logs_dir%/myCustomLog%kernel.environment%.log"
channels: [myCustomLog]
所以我在其他环境配置文件中做了同样的事情(config_prod.yml,config_qualif.yml ...)
问题是可能没有使用config_prod或config_qualif。
我遇到了这个错误:
PHP Fatal error: Uncaught Symfony\\Component\\DependencyInjection\\Exception\\ServiceNotFoundException: You have requested a non-existent service "monolog.logger.myCustomLog". in /var/www/myWebSite/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ContainerBuilder.php:816\nStack trace:\n#0
我在config.yml文件中移动了我的monolog conf,它适用于所有环境,但这不是一个好的解决方案。
你能帮我理解如何正确使用环境配置文件,因为我不确定我做的是什么好事?我不确定fosrestbundle是否使用了正确的环境配置文件。
对于prod环境,我的apache conf看起来像这样:
ServerAdmin webmaster@localhost
DocumentRoot /var/www/myWebSite/web
<IfModule dir_module>
DirectoryIndex app.php
</IfModule>
<Directory /var/www/myWebSite/web>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app.php [QSA,L]
</IfModule>
</Directory>
对于qualif环境,重写规则是:
RewriteRule ^(.*)$ /app_qualif.php [QSA,L]
在app.php中我有这一行:
$kernel = new AppKernel('prod', false);
在app_qualif.php中我有这一行:
$kernel = new AppKernel('qualif', false);
感谢您的帮助
答案 0 :(得分:1)
好的,我解决了这个问题。
配置文件工作正常。
问题来自命令行系统。当我调用命令时,我使用了这种语法:
php app/console app:my-command
但是使用它,symfony不知道要使用的环境配置。 现在我使用以下语法启动命令:
php app/console --env=prod app:my-command
答案 1 :(得分:0)
您为monolog设置自定义类别频道。您应该注册一个服务来处理它。 你有两个解决方案:
1)创建自己的服务并将其标记为monolog通道处理程序,如下所示: http://symfony.com/doc/current/reference/dic_tags.html#dic-tags-monolog
2)由于monolog 2.4你可以直接在config.yml中注册你的新频道monolog:
monolog:
channels: ["myCustomLog"]
handlers:
main:
type: fingers_crossed
action_level: error
handler: nested
nested:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
console:
type: console
myCustomLog:
type: stream
path: "%kernel.logs_dir%/myCustomLog%kernel.environment%.log"
channels: [myCustomLog]
Monolog将自动创建服务 monolog.looger.mycustomlog