我是Symfony2的新手,我正在尋找一種方法將SQL查詢(包括計時)記錄到與我的應用程序的其他部分相同的日誌文件中。如何獲得Doctrine在Symfony2中記錄查詢
從我可以從文檔中確定這應該都是開箱即用,但經過幾個小時的嘗試後,我無法弄清楚我做錯了什麼。
config_dev.yml
monolog:
handlers:
doctrine:
action_level: debug
type: stream
path: %kernel.logs_dir%/%kernel.environment%_doctrine.log
channels: doctrine
config.yml
# Doctrine Configuration
doctrine:
dbal:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
logging: true
profiling: true
orm:
auto_generate_proxy_classes: "%kernel.debug%"
auto_mapping: true
我會在所有生成的日誌文件。我的其他日誌處理程序正常工作(這裏沒有列出)。
我想知道我已經錯了這裏,也不管這是真是正確的方法,或者我應該實現一個新的類,它實現SQL記錄儀,這裏提到:http://vvv.tobiassjosten.net/symfony/logging-doctrine-queries-in-symfony2/
但我我不知道如何通過配置/服務來插入它,以便在項目範圍內應用(例如,我不想在每個控制器中調用它)。
非常感謝您的幫助!
在開發中,這是自動symfony中完成的發現。在生產中,這是不推薦的,因爲這是一個緩慢的過程。 – Stev 2015-04-06 13:29:32
@Stev - 當你說「慢」時,你有什麼樣的指標來支持它?我認爲記錄數據庫查詢對於分析性能低下的站點和繁重的數據庫負載是絕對必要的,而且我聽到這很多關於日誌記錄緩慢的說法。我的假設是我們在這裏談論的是微秒,而不是毫秒或幾十毫秒? – 2015-04-06 15:24:49
我個人沒有指標,但是文件寫入被認爲是一個緩慢的操作。隨着文件大小的增加,文件大小會變慢,即使您使用循環系統(例如操作系統日誌記錄)來構建,您仍然會影響應用性能。 根據我的經驗,我選擇使用像http://newrelic.com/這樣的工具來監控緩慢的查詢。 還有一個MySQL配置(但我確定有一個適用於任何數據庫引擎的配置)來記錄緩慢的查詢(並且您可以選擇對您來說很慢的方式,比如> 50ms很慢)https://dev.mysql。 com/doc/refman/5.1/en/slow-query-log.html – Stev 2015-04-06 19:22:11