humorous_log_formatter 0.0.1
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 +7 -0
- data/.gitignore +14 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +33 -0
- data/Rakefile +2 -0
- data/humorous_log_formatter.gemspec +26 -0
- data/lib/humorous_log_formatter.rb +79 -0
- data/lib/humorous_log_formatter/ext/active_support_buffered_logger.rb +11 -0
- data/lib/humorous_log_formatter/railtie.rb +14 -0
- data/lib/humorous_log_formatter/version.rb +3 -0
- metadata +110 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 75017446ad553bc703ef510dc89d9253513c1d58
|
4
|
+
data.tar.gz: 6125691606998008ccac484f28a95b2a4c972dd8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 904b862ab91785b7b70298ea848a5c8670e4e0db4b8526a376a4d4cdd53015de7a4a75697a68fd29eddadf80e56975a29427dc8d53d6cebf0470b168e5b641d3
|
7
|
+
data.tar.gz: 7a6a79620121411e6aada2624978994b6b6b3db4d441d57654ab20addfdaaed7430ca98177f4dc7acbf15867b04142cc82390d06dbfe88545627c1d62439b1b2
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Peter Boling
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# HumorousLogFormatter
|
2
|
+
|
3
|
+
You want Humorous Log Levels and Color (in Rails development)? Can chickens turtle all the way down? Of course!
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'humorous_log_formatter'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install humorous_log_formatter
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
* Use the source.
|
24
|
+
* There are a bunch of CONSTANTS defined in the code, and everything this gem does is driven by them.
|
25
|
+
* Override them for magic.
|
26
|
+
|
27
|
+
## Contributing
|
28
|
+
|
29
|
+
1. Fork it ( https://github.com/[my-github-username]/humorous_log_formatter/fork )
|
30
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
31
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
32
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
33
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require File.expand_path('../lib/humorous_log_formatter/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |spec|
|
5
|
+
spec.name = "humorous_log_formatter"
|
6
|
+
spec.version = HumorousLogFormatter::VERSION
|
7
|
+
spec.authors = ["Peter Boling"]
|
8
|
+
spec.email = ["peter.boling@gmail.com"]
|
9
|
+
spec.summary = %q{Humorous Log Levels and Color For Rails.}
|
10
|
+
spec.description = %q{Humorous Log Levels and Color For Rails. Customizable!}
|
11
|
+
spec.homepage = "https://github.com/pboling/humorous_log_formatter"
|
12
|
+
spec.license = "MIT"
|
13
|
+
|
14
|
+
spec.files = `git ls-files -z`.split("\x0")
|
15
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
16
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
|
+
spec.require_paths = ["lib"]
|
18
|
+
|
19
|
+
spec.add_development_dependency "bundler", "~> 1.7"
|
20
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
21
|
+
|
22
|
+
# Development Dependencies
|
23
|
+
spec.add_development_dependency(%q<rails>, ["> 3"])
|
24
|
+
spec.add_development_dependency(%q<activesupport>, ["> 3"])
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# Copyright (c) 2014 Peter H. Boling of 9thBit LLC
|
2
|
+
# Released under the MIT license
|
3
|
+
# For Rails 3+
|
4
|
+
# Patterned after this LogFormatter:
|
5
|
+
# https://github.com/QutBioacousticsResearchGroup/bioacoustic-workbench/blob/master/config/initializers/log_formatting.rb
|
6
|
+
# And some of this:
|
7
|
+
# http://95.154.230.254/ip-1/encoded/Oi8vcGFzdGViaW4uY29tL1hxRU1keGRT
|
8
|
+
# Makes as much as possible constant values to not bog down GC and make it whip fast
|
9
|
+
require "humorous_log_formatter/version"
|
10
|
+
|
11
|
+
module HumorousLogFormatter
|
12
|
+
class LogFormatter
|
13
|
+
# TODO: For Rails 4, uncomment the line below
|
14
|
+
#include ActiveSupport::TaggedLogging::Formatter
|
15
|
+
SEVERITY_TO_TAG_MAP = {'DEBUG' => 'meh', 'INFO' => 'fyi', 'WARN' => 'hmm', 'ERROR' => 'wtf', 'FATAL' => 'omg', 'UNKNOWN' => '???'}
|
16
|
+
SEVERITY_TO_COLOR_MAP = {'DEBUG' => '0;37', 'INFO' => '32', 'WARN' => '33', 'ERROR' => '31', 'FATAL' => '31', 'UNKNOWN' => '37'}
|
17
|
+
USE_HUMOROUS_SEVERITIES = begin
|
18
|
+
if ENV['LOG_HUMOR']
|
19
|
+
ENV['LOG_HUMOR'] != 'false' # Default to true
|
20
|
+
else
|
21
|
+
Rails.env.development?
|
22
|
+
end
|
23
|
+
end
|
24
|
+
USE_COLOR = begin
|
25
|
+
if ENV['LOG_COLOR']
|
26
|
+
ENV['LOG_COLOR'] != 'false' # Default to true
|
27
|
+
else
|
28
|
+
Rails.env.development?
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
THIS_FILE_PATH = File.expand_path(".")
|
33
|
+
|
34
|
+
FORMATTED_SEVERITY = USE_HUMOROUS_SEVERITIES ?
|
35
|
+
lambda { |severity| sprintf("%-3s", "#{SEVERITY_TO_TAG_MAP[severity]}") } :
|
36
|
+
lambda { |severity| sprintf("%-5s", "#{severity}") }
|
37
|
+
|
38
|
+
FORMATTED_MESSAGE = if USE_COLOR
|
39
|
+
lambda { |severity, formatted_time, msg|
|
40
|
+
color = SEVERITY_TO_COLOR_MAP[severity]
|
41
|
+
"[\033[#{color}m#{formatted_time}\033[0m] [\033[#{color}m#{FORMATTED_SEVERITY.call(severity)}\033[0m] #{msg.strip}\n"
|
42
|
+
}
|
43
|
+
else
|
44
|
+
lambda { |severity, formatted_time, msg|
|
45
|
+
"[#{formatted_time}] [#{FORMATTED_SEVERITY.call(severity)}] #{msg.strip}\n"
|
46
|
+
}
|
47
|
+
end
|
48
|
+
|
49
|
+
def exception_values(e)
|
50
|
+
trace = e.backtrace.select { |x| !line.starts_with?(THIS_FILE_PATH) }
|
51
|
+
trace = trace.map { |l| colorize_exception(l) } if USE_COLOR
|
52
|
+
first = "\n" + trace.first + ": " + e.message + " (#{e.class})"
|
53
|
+
rest = "\t" + trace[1..-1].join("\n\t")
|
54
|
+
return first + "\n" + rest
|
55
|
+
end
|
56
|
+
|
57
|
+
def colorize_exception(line)
|
58
|
+
"\033[01;32m#{line}\033[0m"
|
59
|
+
end
|
60
|
+
|
61
|
+
def call(severity, time, progname, msg)
|
62
|
+
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S.") << time.usec.to_s[0..2].rjust(3)
|
63
|
+
text = if msg.is_a? String
|
64
|
+
msg
|
65
|
+
elsif msg.is_a? Exception
|
66
|
+
" --> Exception: " + exception_values(msg)
|
67
|
+
else
|
68
|
+
"!!!!! UNKNOWN TYPE: #{msg.class}" + msg.to_s
|
69
|
+
end
|
70
|
+
FORMATTED_MESSAGE.call(severity, formatted_time, text)
|
71
|
+
end
|
72
|
+
|
73
|
+
require "humorous_log_formatter/railtie"
|
74
|
+
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
|
79
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# Copyright (c) 2014 Peter H. Boling of 9thBit LLC
|
2
|
+
# Released under the MIT license
|
3
|
+
# For Rails 3+
|
4
|
+
class ActiveSupport::BufferedLogger
|
5
|
+
# At some point after Rails 3 ActiveSupport::BufferedLogger began inheriting from Logger rather than Object.
|
6
|
+
unless method_defined? :formatter=
|
7
|
+
def formatter=(formatter)
|
8
|
+
@log.formatter = formatter
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# Copyright (c) 2014 Peter H. Boling of 9thBit LLC
|
2
|
+
# Released under the MIT license
|
3
|
+
# For Rails 3+
|
4
|
+
module HumorousLogFormatter
|
5
|
+
class Railtie < ::Rails::Railtie
|
6
|
+
|
7
|
+
require 'humorous_log_formatter/ext/active_support_buffered_logger'
|
8
|
+
|
9
|
+
config.after_initialize do
|
10
|
+
Rails.logger.formatter = HumorousLogFormatter::LogFormatter.new
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
metadata
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: humorous_log_formatter
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Peter Boling
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-10-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.7'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rails
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: activesupport
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3'
|
69
|
+
description: Humorous Log Levels and Color For Rails. Customizable!
|
70
|
+
email:
|
71
|
+
- peter.boling@gmail.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- Gemfile
|
78
|
+
- LICENSE.txt
|
79
|
+
- README.md
|
80
|
+
- Rakefile
|
81
|
+
- humorous_log_formatter.gemspec
|
82
|
+
- lib/humorous_log_formatter.rb
|
83
|
+
- lib/humorous_log_formatter/ext/active_support_buffered_logger.rb
|
84
|
+
- lib/humorous_log_formatter/railtie.rb
|
85
|
+
- lib/humorous_log_formatter/version.rb
|
86
|
+
homepage: https://github.com/pboling/humorous_log_formatter
|
87
|
+
licenses:
|
88
|
+
- MIT
|
89
|
+
metadata: {}
|
90
|
+
post_install_message:
|
91
|
+
rdoc_options: []
|
92
|
+
require_paths:
|
93
|
+
- lib
|
94
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
requirements: []
|
105
|
+
rubyforge_project:
|
106
|
+
rubygems_version: 2.2.2
|
107
|
+
signing_key:
|
108
|
+
specification_version: 4
|
109
|
+
summary: Humorous Log Levels and Color For Rails.
|
110
|
+
test_files: []
|