logplexer 0.2.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +29 -25
- data/lib/logplexer.rb +33 -11
- data/lib/logplexer/configuration.rb +30 -0
- data/lib/logplexer/railtie.rb +2 -4
- data/lib/logplexer/version.rb +1 -1
- data/logplexer-0.2.1.gem +0 -0
- data/logplexer-0.3.0.gem +0 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bcc3206cf4af62b9dd0d52cd06b452bbc0ca550d
|
4
|
+
data.tar.gz: aef3f63f7b25ad59d5295a6605a8cdf2f7efe3b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f416893ba08525785f5b347e71ab435668249c7e1edd4629027cb88399684487b393427f85c9834d210a250116d05583b5f68d85ef3b0b49d381ec5b48fbfd3a
|
7
|
+
data.tar.gz: 8ad20db7c3fea382781da6b4c73754dab3b701eb550b86c9e7ee953d0464a048ee65c58f9b8ca40f2d30d1521500a6b8392b1a684babcd3ffcc59091207cfee0
|
data/README.md
CHANGED
@@ -47,7 +47,7 @@ Inputs can be any type, `Exception`, `String`, `Hash`, etc.
|
|
47
47
|
If you are in development and would like to log to a logfile, just specify a logfile in the opts argument like so:
|
48
48
|
|
49
49
|
```ruby
|
50
|
-
> Logplexer.info( "Oh hai!",
|
50
|
+
> Logplexer.info( "Oh hai!", logfile: '/Users/ryanc/Desktop/log.txt' )
|
51
51
|
=> true
|
52
52
|
```
|
53
53
|
|
@@ -57,6 +57,14 @@ cat ~/Desktop/log.txt
|
|
57
57
|
I, [2015-06-20T15:49:16.040351 #23538] INFO -- : Oh hai!
|
58
58
|
```
|
59
59
|
|
60
|
+
If you're using Rails, you can also specify the logger to be the Rails logger. In fact you can specify any class as the logger
|
61
|
+
so long as the instance responds to all the message types: `debug`, `info`, `warn`, `error`, and `fatal` which all instances of
|
62
|
+
`Logger` will.
|
63
|
+
|
64
|
+
```ruby
|
65
|
+
> Logplexer.error( "Log to Rails not STDOUT", logger: Rails.logger )
|
66
|
+
```
|
67
|
+
|
60
68
|
If you would like to see the whole backtrace, just set `verbose` to true like so:
|
61
69
|
|
62
70
|
```ruby
|
@@ -64,7 +72,7 @@ def method1
|
|
64
72
|
begin
|
65
73
|
raise "Holy errors Batman"
|
66
74
|
rescue => e
|
67
|
-
Logplexer.error( e,
|
75
|
+
Logplexer.error( e, verbose: true )
|
68
76
|
end
|
69
77
|
end
|
70
78
|
|
@@ -86,38 +94,34 @@ E, [2015-06-21T16:04:59.248024 #25737] ERROR -- : > /Users/ryanc/Workspace/test_
|
|
86
94
|
E, [2015-06-21T16:04:59.248041 #25737] ERROR -- : > /Users/ryanc/Workspace/test_logplexer/config/initializers/logplexer.rb:17:in `method3'
|
87
95
|
```
|
88
96
|
|
89
|
-
Or if you are in developmet and would like to have all instances of Logplexer be verbose, just set the environment variable `LOG_VERBOSE` to "true" like so:
|
90
|
-
|
91
|
-
ENV["LOG_VERBOSE"] = "true"
|
92
|
-
|
93
|
-
and everything that isn't specifically marked as `verbose: false` will print the backtrace. Keep in mind that verbose only works when the input is an Exception type.
|
94
|
-
|
95
|
-
|
96
|
-
Likewise, if you are in development or test and would like to quiet all logs ( i.e. don't report any Logplexer errors ), just set `LOG_QUIET` to 'true':
|
97
|
-
|
98
|
-
ENV['LOG_QUIET'] = "true"
|
99
|
-
|
100
97
|
## Configuration
|
101
98
|
|
102
|
-
|
99
|
+
In most cases specifying logfile, logger, etc at the time of the logger call is fine, but I know there are many who need to fine tune their Logplexing capabilities. Logplexer exposes an array of configuration options that you can add to your `config/initializers/logplexer.rb` file.
|
103
100
|
|
104
|
-
|
101
|
+
A basic example of a logplexer initializer:
|
105
102
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
103
|
+
```ruby
|
104
|
+
Logplexer.configure do |config|
|
105
|
+
# config.logfile = "my_sexy_log.log" # STDOUT by default, but if you set logger, this will be ignored.
|
106
|
+
config.logger = Rails.logger # Logger.new(STDOUT) by default
|
107
|
+
config.verbose = Rails.env == "development" # logs the backtrace as well
|
108
|
+
# quiet = false # if true, nothing will log (helpful for tests)
|
109
|
+
config.honeybadger = false # This tells Logplexer whether or not to log to Honeybadger
|
110
|
+
config.min_log_level = :warn # :error by default. Can be ( :debug, :info, :warn, :error, or :fatal )
|
111
|
+
end
|
112
|
+
```
|
113
113
|
|
114
|
-
|
114
|
+
The default initializer is as follows:
|
115
115
|
|
116
|
-
|
116
|
+
```ruby
|
117
|
+
Logplexer.configure do |config|
|
118
|
+
config.honeybadger = !(Rails.env == 'development' or Rails.env == 'test')
|
119
|
+
end
|
120
|
+
```
|
117
121
|
|
118
122
|
## Development
|
119
123
|
|
120
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `
|
124
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rspec spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
121
125
|
|
122
126
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
123
127
|
|
data/lib/logplexer.rb
CHANGED
@@ -2,33 +2,50 @@ require "logplexer/version"
|
|
2
2
|
require "honeybadger"
|
3
3
|
require 'logplexer/railtie' if defined?(Rails)
|
4
4
|
require 'logger'
|
5
|
-
|
5
|
+
require 'logplexer/configuration'
|
6
|
+
class LogplexerError < StandardError
|
7
|
+
end
|
6
8
|
|
9
|
+
module Logplexer
|
7
10
|
extend self
|
11
|
+
attr_writer :config
|
12
|
+
def config
|
13
|
+
@config ||= Configuration.new
|
14
|
+
end
|
8
15
|
|
16
|
+
def configure(&blk)
|
17
|
+
yield( config )
|
18
|
+
end
|
9
19
|
# Dyamically create all the class log methods for Rails logger
|
10
20
|
%W(debug info warn error fatal).each do |log_type|
|
11
21
|
class_eval <<-RUBY
|
12
|
-
def #{log_type}(exception, opts
|
22
|
+
def #{log_type}(exception, **opts)
|
13
23
|
log( exception, "#{log_type}", opts )
|
14
24
|
end
|
15
25
|
RUBY
|
16
26
|
end
|
17
27
|
|
18
|
-
def log( exception, log_level, opts
|
28
|
+
def log( exception, log_level, **opts)
|
19
29
|
# We wrap the Honeybadger notify call so that in development,
|
20
30
|
# we actually see the errors. Then we can unwrap the REST errors
|
21
31
|
# if need be
|
32
|
+
|
22
33
|
return if exception.nil?
|
23
|
-
return if
|
34
|
+
return if Logplexer.config.quiet?
|
35
|
+
|
36
|
+
# If the user specifies a logfile AND a logger in the call, the logger will win out
|
37
|
+
logfile = opts.delete( :logfile ) || Logplexer.config.logfile
|
38
|
+
logger = opts.delete( :logger ) || Logplexer.config.logger
|
39
|
+
unless is_logger?(logger)
|
40
|
+
raise LogplexerError, "If specified, logger must be able to respond to :debug, :info, :warn, :error, and :fatal"
|
41
|
+
end
|
24
42
|
|
25
|
-
|
26
|
-
|
43
|
+
# Override the verbosity if config.verbose is unset
|
44
|
+
verbose = opts.delete( :verbose )
|
45
|
+
verbose = verbose.nil? ? Logplexer.config.verbose? : verbose
|
46
|
+
|
47
|
+
if Logplexer.config.honeybadger? && above_min_log_level?( log_level )
|
27
48
|
|
28
|
-
# Override the verbosity if LOG_VERBOSE is unset
|
29
|
-
verbose = ENV["LOG_VERBOSE"] == "true" ? true : opts.delete( :verbose )
|
30
|
-
if ENV['LOG_TO_HB'] == "true" && above_min_log_level?( log_level )
|
31
|
-
#TODO: Maybe extend this to include other kinds of notifiers.
|
32
49
|
if exception.is_a? String
|
33
50
|
exception = { error_class: "Exception",
|
34
51
|
error_message: exception }
|
@@ -56,8 +73,13 @@ module Logplexer
|
|
56
73
|
end
|
57
74
|
end
|
58
75
|
|
76
|
+
def is_logger?(logger)
|
77
|
+
eval( %w(debug info warn error fatal).map do |meth|
|
78
|
+
"logger.respond_to?(:#{meth})"
|
79
|
+
end.join( ' && ' ) )
|
80
|
+
end
|
59
81
|
def above_min_log_level?( p )
|
60
|
-
min =
|
82
|
+
min = Logplexer.config.min_log_level || :error
|
61
83
|
return priority( p ) >= priority( min )
|
62
84
|
end
|
63
85
|
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'logger'
|
2
|
+
|
3
|
+
module Logplexer
|
4
|
+
class Configuration
|
5
|
+
attr_accessor :logger, :verbose, :quiet, :honeybadger, :min_log_level
|
6
|
+
attr_reader :logfile
|
7
|
+
def initialize
|
8
|
+
@logfile = STDOUT
|
9
|
+
@logger = Logger.new(STDOUT)
|
10
|
+
@verbose = false
|
11
|
+
@quiet = false
|
12
|
+
@honeybadger = false
|
13
|
+
@min_log_level = :error
|
14
|
+
end
|
15
|
+
|
16
|
+
def logfile=( val )
|
17
|
+
@logfile = val
|
18
|
+
@logger = Logger.new( val )
|
19
|
+
@logfile
|
20
|
+
end
|
21
|
+
|
22
|
+
%w(honeybadger quiet verbose).each do |question|
|
23
|
+
class_eval <<-RUBY
|
24
|
+
def #{question}?
|
25
|
+
#{question}
|
26
|
+
end
|
27
|
+
RUBY
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/logplexer/railtie.rb
CHANGED
@@ -1,10 +1,8 @@
|
|
1
1
|
module Logplexer
|
2
2
|
class Railtie < Rails::Railtie
|
3
3
|
initializer "logplexer.configure_rails_initialization" do
|
4
|
-
|
5
|
-
|
6
|
-
else
|
7
|
-
ENV['LOG_TO_HB'] = 'true'
|
4
|
+
Logplexer.configure do |config|
|
5
|
+
config.honeybadger = !(Rails.env == 'development' or Rails.env == 'test')
|
8
6
|
end
|
9
7
|
end
|
10
8
|
end
|
data/lib/logplexer/version.rb
CHANGED
data/logplexer-0.2.1.gem
ADDED
Binary file
|
data/logplexer-0.3.0.gem
ADDED
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logplexer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Canty
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -125,9 +125,12 @@ files:
|
|
125
125
|
- bin/console
|
126
126
|
- bin/setup
|
127
127
|
- lib/logplexer.rb
|
128
|
+
- lib/logplexer/configuration.rb
|
128
129
|
- lib/logplexer/railtie.rb
|
129
130
|
- lib/logplexer/version.rb
|
130
131
|
- logplexer-0.1.0.gem
|
132
|
+
- logplexer-0.2.1.gem
|
133
|
+
- logplexer-0.3.0.gem
|
131
134
|
- logplexer.gemspec
|
132
135
|
homepage: ''
|
133
136
|
licenses:
|