我想用在我的Symfony的Web應用程序與Monlog創建日誌條目自定義格式:使用此格式開始創建了[1]...
而不是插入正確的時間戳一樣[2015-12-16 10:40:23]...
Symfony config.yml - 如何通過名稱傳遞構造函數參數?
//config.yml
services:
monolog.formatter.extended:
class: Monolog\Formatter\LineFormatter
arguments:
format: "[%%datetime%%] %%channel%%.%%level_name%% ...\n\n"
allowInlineLineBreaks: true
ignoreEmptyContextAndExtra: true
calls:
- [includeStacktraces]
的所有日誌條目此問題不顯示當我刪除了兩個額外的paramters allowInlineLineBreaks
和ignoreEmptyContextAndExtra
:
arguments:
format: "[%%datetime%%] %%channel%%.%%level_name%% ...\n\n"
但是,當我不通過名稱傳遞參數,而是簡單地將其作爲完整列表傳遞時,一切正常。該LineFormatter
構造是這樣的:
public function __construct($format = null, $dateFormat = null, $allowInlineLineBreaks = false, $ignoreEmptyContextAndExtra = false) { ...}
所以添加的參數爲列表workes罰款:
arguments:
- "[%%datetime%%] %%channel%%.%%level_name%% ...\n\n"
- null
- true
- true
什麼是錯的名字傳遞的參數?我已經在幾個例子中看到了這一點,但是明顯的是我使用這個方法有什麼問題?
謝謝你的回答!我在不同的例子中看到了這個名稱風格(例如http://www.petethompson.net/blog/symfony/2015/03/15/symfony-logging-client-ip/和http://stackoverflow.com/a/11654384/777861),並認爲它將有效的語法。但是你是對的,我找不到任何使用這種風格的文檔。奇怪。 –
似乎依賴關係注入器只考慮值,所以如果您使用該名稱並保持順序確定,但如果嘗試更改順序,它也將以錯誤的順序注入。我也在研究一些內部的東西,看起來好像關鍵只是用來取代你需要的參數。 –
感謝您的提示,這是完全有道理的。由於dateFormat是第二個參數,很明顯,當「true」(或其他不是有效的)作爲第二個參數傳遞時,這是無法解決的,不會使用任何名稱。 –