bamm_log 0.0.6 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDJlNmU4NzcyYTljNTI5MjhiZDJlNDFhMGJmNjUzNWM4YjgwYjlhYw==
4
+ Yjk3ZDU2MWMxZjJhZTRhYjEwMGEyYmI2MTVmNmQ1ZWNmMzU3ZWNhNg==
5
5
  data.tar.gz: !binary |-
6
- MDU5MTFkM2NmNjY0ZTc4MjA5ZWYzOTA4NGMwMjg1ZmRiZjMyZDk4YQ==
6
+ ZGU1YWUxMjBkZTAzYzFkMzNjMTczZjgzMGE4ZjRlNDljNjFiYzBhYQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NGE3Mzg5OTAyZWJiYzEzNTk4YjhkZTc2ZjIwOTM0YjRkMGU2YzFkYjdjN2Vh
10
- MDM3NjcxOGE3OTZlYjYzZTRkMjU4ODZmN2IyZTQ1Zjk2Y2E1Y2IyZDU0ZmQx
11
- OGE5NTUxZTFiM2YzM2RmNjA2YjM4MmZiNGEwNmQ3NzliZjA3MjQ=
9
+ NzAwZmZiNDk4OWY1YzNmODgyMmU4NWJjNDJlMDk2NjMzZGVhYjlmNzgzMjJj
10
+ ZGU3YzhjMjIzNWM4ZGRlNTQwOWUwYmJhMTBjMGNlMjM5MTZhNGYxY2EwY2Mw
11
+ OTc4Y2NhM2NiOTI2N2I2Mjg4MGEwN2Q1ZTU2ZTM1NDc4ZjY3OWE=
12
12
  data.tar.gz: !binary |-
13
- NGJhMDk0ODE0ZjdlYzJiYWRiZTg4Mzc1MDVjY2NkMGUwMzJkZmFjODU3MmM5
14
- YmIzNzQ2NDAyMWUwOWRmM2NhNWJiYzU4YzkyZTYxMWMyYTc0NTQyZWI2Zjgz
15
- Y2FlM2U4ZmY5YjFmNWUxYjZkMjE2YjhlNTA0OTcyM2E5OWZiMGE=
13
+ ZmFhOTQ0MzE2YzBlMmZiOGE2MDY2MTRlODJkNTZlM2UzZmI1NzkwY2FjNzRl
14
+ NDk1MzhiYWU1NWFlOTliZDZlYWE1Mjk3Y2UwYWIxODg0ZTU3ZGQ4YTZjY2Zm
15
+ OTA3ZmZlNjMzNjAwZGE0OTAwMWNmOGJjYjc1ZWZmYWY3MTEyZmQ=
data/README.md CHANGED
@@ -55,7 +55,7 @@ Include in your app
55
55
 
56
56
  class App < Sinatra::Base
57
57
 
58
- include BammLog::Logger
58
+ helpers BammLog::Logger
59
59
 
60
60
  end
61
61
 
@@ -64,7 +64,7 @@ And add manual logs
64
64
  BammLog.print "This is a log"
65
65
 
66
66
 
67
- In development environment, bamm_log logs to your terminal.<br />
67
+ In development environment, bamm_log logs to your terminal. (Right now is just a puts...meh, not really a logger)<br />
68
68
  In live environment, training or staging, bamm_log creates a file with the name "environment".log in /log and logs all the accesses and errors from your application.
69
69
 
70
70
  ## Contributing
data/lib/bamm_log.rb CHANGED
@@ -3,25 +3,18 @@ require_relative 'bamm_log/formatter'
3
3
  require_relative 'bamm_log/version'
4
4
 
5
5
  module BammLog
6
+
6
7
  module Logger
7
8
 
8
9
  def self.included(klass)
9
- klass.configure do
10
- klass.enable :logging
11
- klass.use BammLog::ExceptionMiddleware
12
- end
13
-
10
+ klass.use BammLog::ExceptionMiddleware
14
11
  klass.include BammLog::Formatter
15
-
16
- @instance ||= if klass.environment != :development
12
+
13
+ @instance ||= if ENV['RACK_ENV'] != 'development'
17
14
  EnvLogger.new(klass)
18
15
  else
19
16
  DevLogger.new
20
17
  end
21
-
22
- klass.configure do
23
- klass.use Rack::CommonLogger, BammLog::Logger.instance
24
- end
25
18
  end
26
19
 
27
20
  def self.instance
@@ -35,14 +28,14 @@ module BammLog
35
28
  attr_accessor :logger
36
29
 
37
30
  def initialize(app)
38
- self.logger = ::Logger.new(EnvLogger.log_file(app)).tap do |logger|
31
+ @logger = ::Logger.new(EnvLogger.log_file(app)).tap do |logger|
39
32
  ::Logger.class_eval { alias :write :'<<' }
40
33
  logger.level = ::Logger::INFO
41
34
  end
42
35
  end
43
36
 
44
37
  def self.log_file(app)
45
- @log_file ||= File.new("#{app.root}/log/#{app.environment}.log", 'a+').tap do |log_file|
38
+ @log_file ||= File.new("#{ENV['ROOT_PATH']}/log/#{ENV['RACK_ENV']}.log", 'a+').tap do |log_file|
46
39
  log_file.sync = true
47
40
  end
48
41
  end
@@ -58,15 +51,9 @@ module BammLog
58
51
  def info(text)
59
52
  puts BammLog::Formatter.call_formatted(Time.now, text)
60
53
  end
61
-
62
- end
63
54
 
64
- end
55
+ end
65
56
 
66
- def print(message)
67
- BammLog::Logger.instance.info message
68
57
  end
69
-
70
- extend self
71
58
 
72
- end
59
+ end
@@ -1,56 +1,86 @@
1
1
  module BammLog
2
+
2
3
  class ExceptionMiddleware
3
4
 
4
- attr_reader :env
5
+ attr_reader :env, :request, :logger
5
6
 
6
7
  def initialize(app, options={})
7
- @app = app
8
+ @app = app
8
9
  end
9
10
 
10
11
  def call(env)
11
- @env = env
12
-
13
12
  begin
13
+ @request_id = SecureRandom.base64(24).tr('+/=lIO0', 'pqrsxyz')
14
+ @start_time = Time.now
15
+ @env = env
16
+
17
+ build_request
14
18
  log_start
15
19
  log_params
16
- @app.call(env)
20
+
21
+ begin
22
+ call = @app.call(env)
23
+ @end_time = Time.now
24
+ log_end
25
+ call
26
+ rescue Exception => e
27
+ @end_time = Time.now
28
+ log_exception(e)
29
+ log_end
30
+ @app.call(env)
31
+ end
17
32
  rescue Exception => e
18
- log_exception
19
- @app.call(env)
33
+ log_exception(e)
20
34
  end
21
35
  end
22
36
 
23
37
  private
24
38
 
39
+ def build_request
40
+ @request = Rack::Request.new(env)
41
+ end
42
+
25
43
  def request_params
26
- if request_body_params?
27
- env['rack.request.form_hash']
28
- else
29
- Rack::Utils.parse_nested_query(env['QUERY_STRING'])
30
- end
44
+ request.params.except(:route_info)
31
45
  end
32
46
 
33
47
  def log_start
34
- BammLog.print "Started #{env['REQUEST_METHOD']} \"#{env['REQUEST_URI']}\""
48
+ print "Started #{env['REQUEST_METHOD']} \"#{env['REQUEST_URI']}\""
35
49
  end
36
50
 
37
51
  def log_params
38
- BammLog.print "Parameters: #{request_params.inspect}"
52
+ print "Parameters: #{request_params.to_hash.inspect}"
39
53
  end
40
54
 
41
- def log_exception
42
- e = env['sinatra.error']
55
+ def log_exception(e)
56
+ print "Bamm! #{e.class}: #{e.message}"
43
57
 
44
- BammLog.print "Bamm! #{e.class}: #{e.message}"
45
-
46
58
  e.backtrace.each do |line|
47
- BammLog.print "#{line}"
59
+ print "#{line}"
48
60
  end
49
61
  end
50
62
 
63
+ def log_end
64
+ print "Ended #{env['REQUEST_METHOD']} \"#{env['REQUEST_URI']}\" in #{request_time_ms} ms"
65
+ end
66
+
67
+ def request_time_ms
68
+ (@end_time-@start_time).round(4)
69
+ end
70
+
71
+ def print(message)
72
+
73
+ if ENV['RACK_ENV'] != 'development' && ENV['RACK_ENV'] != 'test'
74
+ message = "[#{@request_id}] #{message}"
75
+ end
76
+
77
+ BammLog::Logger.instance.info message
78
+ end
79
+
51
80
  def request_body_params?
52
81
  ['POST', 'PUT', 'PATCH'].include? env['REQUEST_METHOD']
53
82
  end
54
83
 
55
84
  end
56
- end
85
+
86
+ end
@@ -16,8 +16,8 @@ module BammLog
16
16
  end
17
17
  end
18
18
  end
19
-
19
+
20
20
  extend self
21
21
 
22
22
  end
23
- end
23
+ end
@@ -1,3 +1,3 @@
1
1
  module BammLog
2
- VERSION = "0.0.6"
2
+ VERSION = "0.1.0"
3
3
  end
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bamm_log
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joaquim Adráz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-28 00:00:00.000000000 Z
11
+ date: 2014-12-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -30,6 +30,7 @@ files:
30
30
  - pkg/bamm_log-0.0.3.gem
31
31
  - pkg/bamm_log-0.0.4.gem
32
32
  - pkg/bamm_log-0.0.5.gem
33
+ - pkg/bamm_log-0.0.6.gem
33
34
  homepage: https://github.com/joaquimadraz/bamm_log
34
35
  licenses:
35
36
  - MIT