我有一個Sinatra應用程序,它通過記錄器的一個實例向STDOUT輸出穩定的信息流。我還開啓了Sinatra日誌記錄和Rack登錄。爲了論證的緣故,讓我們說這是一個好主意。如何讓SInatra和Rack輸出到我的記錄器實例?
這裏的輸出是什麼樣子的時刻:
[2016-03-03 11:32:38] INFO WEBrick 1.3.1
[2016-03-03 11:32:38] INFO ruby 2.3.0 (2015-12-25) [x86_64-linux]
[2016-03-03 11:32:38] INFO WEBrick::HTTPServer#start: pid=12303 port=4567
[03/03/16 11:32:45] core/lib/registry.rb INFO Resolving request for u:/swingshift/registry a:GET
[03/03/16 11:32:45] core/lib/registry.rb INFO SwingShift::RegistryController has been selected...
10.192.0.136 - - [03/Mar/2016:11:32:45 +0000] "GET /swingshift/registry HTTP/1.1" 200 10227 0.0557
10.192.0.136 - - [03/Mar/2016:11:32:46 +0000] "GET /css/bootstrap.min.css HTTP/1.1" 304 - 0.0023
正如你可以看到,這是一個有點亂。我想告訴Sinatra和Rack使用Logger的實例,而不是自己的實例。
- 如何獲得Sinatra使用我的記錄器?
- 如何讓Rack使用我的記錄器?
(或者,我可以通過一個進程來他們記錄器設置它們的格式一樣嗎?這不是那麼好,但它會是什麼。)
這裏是我的末日設置阻止。此時$記錄已經指向我的Logger實例:
configure do
$logger.info(__FILE__){"Starting..."}
set :bind, '0.0.0.0'
enable :sessions
set :session_secret, 'whatever'
set :views, BASEDIR
set :haml, :layout_options => { :views => 'core/views' }
enable :logging
set :dump_errors, true
end
我也得到了一個
use Rack::CommonLogger, $logger
...但它似乎並沒有做任何事情。
更新::我所知道的https://stackoverflow.com/questions/2239240A/use-rackcommonlogger-in-sinatra,但:
- 它不涉及西納特拉記錄,只是機架
- 接受的答案似乎非常複雜,有許多懸而未決在評論中提出的觀點。 (我真的需要設置一個config.ru記錄,並添加一箇中間件層記錄?對於記錄層錯的語法,> = 4人似乎認爲?)
根據西納特拉我」 m應該能夠從settings
塊中控制Rack。這是不是真的?
更新2:我現在已經有了解決其他問題的正確方法。按原樣執行它......對這裏的日誌完全沒有任何影響。
[使用機架:: CommonLogger在西納特拉(可能的重複http://stackoverflow.com/questions/2239240/use- rackcommonlogger-in-sinatra) – Anthony