Added rack logger middleware that tails the environment log
This commit is contained in:
parent
96ab01e8f2
commit
e9ae2b2f4c
|
@ -1,5 +1,6 @@
|
||||||
module Rails
|
module Rails
|
||||||
module Rack
|
module Rack
|
||||||
|
autoload :Logger, "rails/rack/logger"
|
||||||
autoload :Static, "rails/rack/static"
|
autoload :Static, "rails/rack/static"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
module Rails
|
||||||
|
module Rack
|
||||||
|
class Logger
|
||||||
|
EnvironmentLog = "#{File.expand_path(Rails.root)}/log/#{Rails.env}.log"
|
||||||
|
|
||||||
|
def initialize(app, log = nil)
|
||||||
|
@app = app
|
||||||
|
@path = Pathname.new(log || EnvironmentLog).cleanpath
|
||||||
|
@cursor = ::File.size(@path)
|
||||||
|
@last_checked = Time.now
|
||||||
|
end
|
||||||
|
|
||||||
|
def call(env)
|
||||||
|
response = @app.call(env)
|
||||||
|
::File.open(@path, 'r') do |f|
|
||||||
|
f.seek @cursor
|
||||||
|
if f.mtime > @last_checked
|
||||||
|
contents = f.read
|
||||||
|
@last_checked = f.mtime
|
||||||
|
@cursor += contents.length
|
||||||
|
print contents
|
||||||
|
end
|
||||||
|
end
|
||||||
|
response
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue