logster 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ad8ab40a4cbb66a605f51194121b6d53c06b535d
4
- data.tar.gz: 62a4583c35dc53e28ae789ff3c4d74304bce8861
3
+ metadata.gz: eadf4ac198a2256f98ce3bfcb70be74dbe2056eb
4
+ data.tar.gz: c85f2dac78f07d7cc0b77eedcafd1572942e9ebe
5
5
  SHA512:
6
- metadata.gz: 0a750c530e9b5b2365ba544aa034a9433992d24ef7da5c79d688263946d999445284f3c79682c2341b54ec7885f10bf7c95e5572467008c72a0da7b5327d7cd9
7
- data.tar.gz: 5706d286cad50e1a00200be2a78199284b44076ab3aa8c028b17ba7a6e16072edc4e0873d4643637721050df1a218beca5d426374b617f74bd9cfd808d5458bf
6
+ metadata.gz: caee98bce33d83120e194452898da0533a1ffcd180c05f8c893563b0039d453b3cd6620cf9a5ffa333722ee1cabc17eefb1c2c61acddfb31afb739f61642b2c9
7
+ data.tar.gz: 7b35e552e33df43b0d3e513f68cc380b21064b48df88b82f5aaa333345844b457f7f677a0ef79a1492e4049cf9bb5d2d91b1333bb42fdc6abaf73a2c60723c85
data/README.md CHANGED
@@ -17,15 +17,17 @@ And then execute:
17
17
 
18
18
  $ bundle
19
19
 
20
- Logster will wire up `/logs` path in your Rails app in **development** mode only. Production mode is being worked on.
20
+ Logster will wire up `/logs` path in your Rails app in **development** mode only. To wire up in production you will need to set
21
21
 
22
- ## Usage
22
+ ```
23
+ Logster.config.authorize_callback = lambda{|env| your_own_can_see_logs? }
24
+ ```
23
25
 
24
- Logster is in current development, at the moment the focus is on a decent tool for dev. Once that is complete production mode will be built.
26
+ ## Usage
25
27
 
26
28
  The concept is to have an embedded "exception reporting service" admins can view on live sites.
27
29
 
28
- Logs will be visible by default at `http://sitename.com/logs`, only dev mode is implemented now.
30
+ Logs will be visible by default at `http://sitename.com/logs`
29
31
 
30
32
  ## Thanks
31
33
 
@@ -56,3 +58,7 @@ Logster UI is built using [Ember.js](http://emberjs.com/)
56
58
  - Fix pacakging binstubs by mistake
57
59
  - 2014-05-13: Version 0.0.9
58
60
  - Stray debugger message removed, add window.location logging to js
61
+ - 2014-05-24: Version 0.0.10
62
+ - Correct context for error reporting
63
+ - Clean up backtraces of reported exceptions
64
+ - Report params in env tab
@@ -62,8 +62,19 @@ App.Message = Ember.Object.extend({
62
62
  if(env){
63
63
  var buffer = [];
64
64
  _.each(env, function(v,k){
65
- buffer.push(k + ": " + v);
65
+ if(k !== "params"){
66
+ buffer.push(k + ": " + v);
67
+ }
66
68
  });
69
+
70
+ buffer.push("");
71
+ if(_.size(env.params) > 0){
72
+ buffer.push("Params:");
73
+ buffer.push("");
74
+ _.each(env.params, function(v,k){
75
+ buffer.push(" " + k + ": " + v);
76
+ });
77
+ }
67
78
  return buffer.join("\n");
68
79
  }
69
80
 
@@ -1,5 +1,5 @@
1
1
  module Logster
2
2
  class Configuration
3
- attr_accessor :authorize_callback, :subdirectory
3
+ attr_accessor :authorize_callback, :subdirectory, :current_context
4
4
  end
5
5
  end
@@ -4,7 +4,7 @@ module Logster
4
4
  class Logger < ::Logger
5
5
  LOGSTER_ENV = "logster_env".freeze
6
6
 
7
- attr_accessor :store
7
+ attr_accessor :store, :skip_store
8
8
 
9
9
  def initialize(store)
10
10
  super(nil)
@@ -16,6 +16,7 @@ module Logster
16
16
  @chained << logger
17
17
  end
18
18
 
19
+
19
20
  def add(severity, message, progname, &block)
20
21
  if severity < @level
21
22
  return true
@@ -41,6 +42,8 @@ module Logster
41
42
  end
42
43
  end
43
44
 
45
+ return if @skip_store
46
+
44
47
  @store.report(severity, progname, message, {
45
48
  env: Thread.current[LOGSTER_ENV]
46
49
  })
@@ -59,6 +59,16 @@ module Logster
59
59
  def self.populate_from_env(env)
60
60
  env[LOGSTER_ENV] ||= begin
61
61
  scrubbed = {}
62
+ request = Rack::Request.new(env)
63
+ params = {}
64
+ request.params.each do |k,v|
65
+ if k.include? "password"
66
+ params[k] = "[reducted]"
67
+ else
68
+ params[k] = v[0..100]
69
+ end
70
+ end
71
+ scrubbed["params"] = params if params.length > 0
62
72
  ALLOWED_ENV.map{ |k|
63
73
  scrubbed[k] = env[k] if env[k]
64
74
  }
@@ -0,0 +1,19 @@
1
+ class Logster::Middleware::DebugExceptions < ActionDispatch::DebugExceptions
2
+ private
3
+
4
+ def log_error(env,wrapper)
5
+ Logster.logger.skip_store = true
6
+ exception = wrapper.exception
7
+
8
+ Logster.config.current_context.call(env) do
9
+ Logster.store.report(::Logger::Severity::FATAL,
10
+ "web",
11
+ exception.class.to_s << " (" << exception.to_s << ")",
12
+ backtrace: exception.backtrace.join("\n"),
13
+ env: env)
14
+ end
15
+ super(env, wrapper)
16
+ ensure
17
+ Logster.logger.skip_store = false
18
+ end
19
+ end
@@ -14,7 +14,10 @@ module Logster
14
14
 
15
15
  path = env[PATH_INFO]
16
16
  if path == @error_path
17
- return report_js_error(env)
17
+ Logster.config.current_context.call(env) do
18
+ report_js_error(env)
19
+ end
20
+ return [200,{},["OK"]]
18
21
  end
19
22
 
20
23
  @app.call(env)
@@ -36,7 +39,6 @@ module Logster
36
39
  message,
37
40
  backtrace: backtrace,
38
41
  env: env)
39
- [200,{},["OK"]]
40
42
  end
41
43
 
42
44
  end
@@ -16,7 +16,6 @@ module Logster
16
16
 
17
17
  @assets_path = File.expand_path("../../../../assets", __FILE__)
18
18
  @fileserver = Rack::File.new(@assets_path)
19
- @authorize_callback = Logster.config.authorize_callback
20
19
  end
21
20
 
22
21
  def call(env)
@@ -29,7 +28,7 @@ module Logster
29
28
 
30
29
  if resource = resolve_path(path)
31
30
 
32
- return @app.call(env) if @authorize_callback && !@authorize_callback.call(env)
31
+ return @app.call(env) if !Logster.config.authorize_callback.call(env)
33
32
 
34
33
  if resource =~ /\.js$|\.handlebars$|\.css$/
35
34
  env[PATH_INFO] = resource
@@ -8,7 +8,7 @@ module Logster::Rails
8
8
  return unless Rails.env.development? || Rails.env.production?
9
9
 
10
10
  if defined?(Redis)
11
- require 'logster/middleware/viewer'
11
+ require 'logster/middleware/debug_exceptions'
12
12
  require 'logster/middleware/reporter'
13
13
  require 'logster/redis_store'
14
14
 
@@ -25,18 +25,14 @@ module Logster::Rails
25
25
  end
26
26
  end
27
27
 
28
+
28
29
  def self.initialize!(app)
29
30
  return unless Rails.env.development? || Rails.env.production?
30
31
 
31
32
  if Logster::Logger === Rails.logger
32
- if Rails.env.development?
33
- # in production you must mount in routes.rb
34
- # or by inserting middleware
35
- app.middleware.use Logster::Middleware::Viewer
36
- end
37
-
38
33
  app.middleware.insert_before ActionDispatch::ShowExceptions, Logster::Middleware::Reporter
39
-
34
+ app.middleware.insert_before ActionDispatch::DebugExceptions, Logster::Middleware::DebugExceptions, Rails.application
35
+ app.middleware.delete ActionDispatch::DebugExceptions
40
36
  app.config.colorize_logging = false
41
37
  end
42
38
  end
@@ -44,6 +40,9 @@ module Logster::Rails
44
40
  class Railtie < ::Rails::Railtie
45
41
 
46
42
  config.before_initialize do
43
+ Logster.config.authorize_callback = lambda {|env|
44
+ Rails.env == "development"
45
+ }
47
46
  Logster::Rails.set_logger(config)
48
47
  end
49
48
 
@@ -1,3 +1,3 @@
1
1
  module Logster
2
- VERSION = "0.0.9"
2
+ VERSION = "0.0.10"
3
3
  end
@@ -0,0 +1,8 @@
1
+ require 'logster/middleware/viewer'
2
+
3
+ class Logster::Web
4
+ def self.call(env)
5
+ @middleware ||= Logster::Middleware::Viewer.new(nil)
6
+ @middleware.call(env)
7
+ end
8
+ end
data/lib/logster.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'logster/logger'
2
2
  require 'logster/message'
3
3
  require 'logster/configuration'
4
+ require 'logster/web'
4
5
 
5
6
  module Logster
6
7
  def self.logger=(logger)
@@ -33,6 +34,9 @@ module Logster
33
34
  end
34
35
  end
35
36
 
37
+ Logster.config.current_context = lambda{|env, &block| block.call}
38
+ Logster.config.authorize_callback = lambda{|env| true}
39
+
36
40
  if defined?(::Rails) && ::Rails::VERSION::MAJOR.to_i >= 3
37
41
  require 'logster/rails/railtie'
38
42
  end
@@ -0,0 +1,21 @@
1
+ require_relative '../../test_helper'
2
+ require 'rack'
3
+ require 'logster/redis_store'
4
+ require 'logster/middleware/reporter'
5
+
6
+
7
+ class TestReporter < Minitest::Test
8
+
9
+ def test_logs_errors
10
+ Logster.store = Logster::TestStore.new
11
+
12
+ reporter = Logster::Middleware::Reporter.new(nil)
13
+ env = Rack::MockRequest.env_for("/logs/report_js_error?message=hello")
14
+ status, = reporter.call(env)
15
+
16
+ assert_equal(200, status)
17
+ assert_equal(1, Logster.store.reported.length)
18
+ end
19
+
20
+ end
21
+
@@ -1,5 +1,6 @@
1
1
  require_relative '../test_helper'
2
2
  require 'logster/redis_store'
3
+ require 'rack'
3
4
 
4
5
  class TestRedisStore < Minitest::Test
5
6
 
@@ -148,18 +149,26 @@ class TestRedisStore < Minitest::Test
148
149
  end
149
150
 
150
151
  def test_env
151
- env = {
152
- "REQUEST_URI" => "/test",
152
+ env = Rack::MockRequest.env_for("/test").merge({
153
153
  "HTTP_HOST" => "www.site.com",
154
- "REQUEST_METHOD" => "GET",
155
154
  "HTTP_USER_AGENT" => "SOME WHERE"
156
- }
155
+ })
157
156
  orig = env.dup
158
157
  orig["test"] = "tests"
159
158
  orig["test1"] = "tests1"
160
-
161
159
  Logster.add_to_env(env,"test","tests")
162
160
  Logster.add_to_env(env,"test1","tests1")
161
+
162
+ orig.delete_if do |k,v|
163
+ !%w{
164
+ HTTP_HOST
165
+ REQUEST_METHOD
166
+ HTTP_USER_AGENT
167
+ test
168
+ test1
169
+ }.include? k
170
+ end
171
+
163
172
  @store.report(Logger::INFO, "test", "test", env: env)
164
173
  assert_equal(orig, @store.latest.last.env)
165
174
  end
data/test/test_helper.rb CHANGED
@@ -5,3 +5,14 @@ require 'minitest/pride'
5
5
  require 'logster'
6
6
  require 'redis'
7
7
 
8
+
9
+ class Logster::TestStore
10
+ attr_accessor :reported
11
+ def initialize
12
+ @reported = []
13
+ end
14
+
15
+ def report(*args)
16
+ @reported << args
17
+ end
18
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - UI for viewing logs in Rack
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-14 00:00:00.000000000 Z
11
+ date: 2014-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -125,12 +125,15 @@ files:
125
125
  - lib/logster/configuration.rb
126
126
  - lib/logster/logger.rb
127
127
  - lib/logster/message.rb
128
+ - lib/logster/middleware/debug_exceptions.rb
128
129
  - lib/logster/middleware/reporter.rb
129
130
  - lib/logster/middleware/viewer.rb
130
131
  - lib/logster/rails/railtie.rb
131
132
  - lib/logster/redis_store.rb
132
133
  - lib/logster/version.rb
134
+ - lib/logster/web.rb
133
135
  - logster.gemspec
136
+ - test/logster/middleware/test_reporter.rb
134
137
  - test/logster/middleware/test_viewer.rb
135
138
  - test/logster/test_logger.rb
136
139
  - test/logster/test_redis_store.rb
@@ -161,6 +164,7 @@ signing_key:
161
164
  specification_version: 4
162
165
  summary: UI for viewing logs in Rack
163
166
  test_files:
167
+ - test/logster/middleware/test_reporter.rb
164
168
  - test/logster/middleware/test_viewer.rb
165
169
  - test/logster/test_logger.rb
166
170
  - test/logster/test_redis_store.rb