format_logs 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.
- data/.document +4 -0
- data/.loadpath +5 -0
- data/.project +17 -0
- data/.rspec +1 -0
- data/ChangeLog.rdoc +4 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +51 -0
- data/Rakefile +32 -0
- data/format_logs.gemspec +15 -0
- data/gemspec.yml +33 -0
- data/lib/format_logs/version.rb +4 -0
- data/lib/format_logs.rb +136 -0
- data/spec/format_logs_spec.rb +8 -0
- data/spec/spec_helper.rb +5 -0
- metadata +142 -0
data/.document
ADDED
data/.loadpath
ADDED
data/.project
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<projectDescription>
|
3
|
+
<name>format_logs</name>
|
4
|
+
<comment></comment>
|
5
|
+
<projects>
|
6
|
+
</projects>
|
7
|
+
<buildSpec>
|
8
|
+
<buildCommand>
|
9
|
+
<name>org.rubypeople.rdt.core.rubybuilder</name>
|
10
|
+
<arguments>
|
11
|
+
</arguments>
|
12
|
+
</buildCommand>
|
13
|
+
</buildSpec>
|
14
|
+
<natures>
|
15
|
+
<nature>org.rubypeople.rdt.core.rubynature</nature>
|
16
|
+
</natures>
|
17
|
+
</projectDescription>
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--colour --format documentation
|
data/ChangeLog.rdoc
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 Erik Gustavson
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
= format_logs - basic log formatting
|
2
|
+
|
3
|
+
* {Homepage}[http://github.com/goosetav/format_logs]
|
4
|
+
* {Documentation}[http://rubydoc.info/gems/format_logs/frames]
|
5
|
+
|
6
|
+
== Description
|
7
|
+
|
8
|
+
Adds some simple formatting to the standard Rails BufferedLogger class.
|
9
|
+
|
10
|
+
This solution aims to be something between the default logging which is missing information such as
|
11
|
+
timestamps, process IDs and severity levels and a full logging solution like {log4r}[http://log4r.rubyforge.org/]
|
12
|
+
|
13
|
+
Gem inspired by Paul Dowman's {better_logging}[https://github.com/pauldowman/better_logging]
|
14
|
+
|
15
|
+
== Features
|
16
|
+
|
17
|
+
Configurable settings - accepts a hash of options to adjust the output format.
|
18
|
+
|
19
|
+
== Examples
|
20
|
+
|
21
|
+
These are the defaults
|
22
|
+
|
23
|
+
FormatLogs.settings = {
|
24
|
+
:time_format => '%Y-%m-%d %H:%M:%S %z',
|
25
|
+
:show_pid => true,
|
26
|
+
:show_host => true,
|
27
|
+
:show_time => true
|
28
|
+
}
|
29
|
+
|
30
|
+
you can pass any combination of options you want:
|
31
|
+
FormatLogs.setting = {:show_pid => false}
|
32
|
+
|
33
|
+
== Requirements
|
34
|
+
|
35
|
+
Rails 3.0+
|
36
|
+
|
37
|
+
== Install
|
38
|
+
|
39
|
+
add:
|
40
|
+
|
41
|
+
gem require 'format_logs'
|
42
|
+
|
43
|
+
to your Gemfile and then run:
|
44
|
+
|
45
|
+
bundle update format_logs
|
46
|
+
|
47
|
+
== Copyright
|
48
|
+
|
49
|
+
Copyright (c) 2011 Erik Gustavson
|
50
|
+
|
51
|
+
See LICENSE.txt for details.
|
data/Rakefile
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
begin
|
5
|
+
gem 'ore-tasks', '~> 0.4'
|
6
|
+
require 'ore/tasks'
|
7
|
+
|
8
|
+
Ore::Tasks.new
|
9
|
+
rescue LoadError => e
|
10
|
+
STDERR.puts e.message
|
11
|
+
STDERR.puts "Run `gem install ore-tasks` to install 'ore/tasks'."
|
12
|
+
end
|
13
|
+
|
14
|
+
require 'rake/rdoctask'
|
15
|
+
Rake::RDocTask.new do |rdoc|
|
16
|
+
rdoc.title = "format_logs"
|
17
|
+
end
|
18
|
+
task :doc => :rdoc
|
19
|
+
|
20
|
+
begin
|
21
|
+
gem 'rspec', '~> 2.4'
|
22
|
+
require 'rspec/core/rake_task'
|
23
|
+
|
24
|
+
RSpec::Core::RakeTask.new
|
25
|
+
rescue LoadError => e
|
26
|
+
task :spec do
|
27
|
+
abort "Please run `gem install rspec` to install RSpec."
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
task :test => :spec
|
32
|
+
task :default => :spec
|
data/format_logs.gemspec
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
begin
|
4
|
+
Ore::Specification.new do |gemspec|
|
5
|
+
# custom logic here
|
6
|
+
end
|
7
|
+
rescue NameError
|
8
|
+
begin
|
9
|
+
require 'ore/specification'
|
10
|
+
retry
|
11
|
+
rescue LoadError
|
12
|
+
STDERR.puts "The '#{__FILE__}' file requires Ore."
|
13
|
+
STDERR.puts "Run `gem install ore-core` to install Ore."
|
14
|
+
end
|
15
|
+
end
|
data/gemspec.yml
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
name: format_logs
|
2
|
+
version: 0.1.0
|
3
|
+
summary: "Adds some basic formatting to the default rails logs"
|
4
|
+
description: |
|
5
|
+
Adds some simple formatting to the standard Rails BufferedLogger class.
|
6
|
+
|
7
|
+
This solution aims to be something between the default logging which is missing information such as
|
8
|
+
timestamps, process IDs and severity levels and a full logging solution like log4r
|
9
|
+
|
10
|
+
license: MIT
|
11
|
+
authors: goosetav
|
12
|
+
homepage: http://github.com/goosetav/format_logs
|
13
|
+
post_install_message: |
|
14
|
+
*********************************************
|
15
|
+
|
16
|
+
Add the following to your Gemfile to activate
|
17
|
+
|
18
|
+
gem "format_logs"
|
19
|
+
|
20
|
+
Configuration options can be set by:
|
21
|
+
|
22
|
+
FormatLogs.settings = {...}
|
23
|
+
|
24
|
+
see README.rdoc for more details
|
25
|
+
|
26
|
+
*********************************************
|
27
|
+
|
28
|
+
dependencies:
|
29
|
+
rails: >= 3.0
|
30
|
+
|
31
|
+
development_dependencies:
|
32
|
+
ore-tasks: ~> 0.4
|
33
|
+
rspec: ~> 2.4
|
data/lib/format_logs.rb
ADDED
@@ -0,0 +1,136 @@
|
|
1
|
+
require 'format_logs/version'
|
2
|
+
|
3
|
+
module FormatLogs
|
4
|
+
|
5
|
+
def self.included(base)
|
6
|
+
puts "Adding formatting to #{base.name}"
|
7
|
+
base.send :extend, ClassMethods
|
8
|
+
|
9
|
+
base.send :include, InstanceMethods
|
10
|
+
base.alias_method_chain :add, :formatting # if base.respond_to? :add
|
11
|
+
end
|
12
|
+
|
13
|
+
module ClassMethods
|
14
|
+
|
15
|
+
def settings
|
16
|
+
@settings ||= default_settings
|
17
|
+
end
|
18
|
+
|
19
|
+
def settings=(new_settings)
|
20
|
+
@settings = default_settings + new_settings
|
21
|
+
flush_attributes!
|
22
|
+
end
|
23
|
+
|
24
|
+
def flush_cached_settings!
|
25
|
+
[@time_format, @show_time, @show_pid, @show_host, @trim_leading_whitespace].each {|a| a = nil}
|
26
|
+
end
|
27
|
+
|
28
|
+
def default_settings
|
29
|
+
{
|
30
|
+
:time_format => '%Y-%m-%d %H:%M:%S %z',
|
31
|
+
:show_pid => true,
|
32
|
+
:show_host => true,
|
33
|
+
:show_time => true,
|
34
|
+
:trim_leading_whitespace => true
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
def time_format
|
39
|
+
@time_format ||= settings[:time_format]
|
40
|
+
end
|
41
|
+
|
42
|
+
def show_time?
|
43
|
+
@show_time ||= settings[:show_time]
|
44
|
+
end
|
45
|
+
|
46
|
+
def use_color?
|
47
|
+
@use_color ||= (Rails.configuration.colorize_logging != false)
|
48
|
+
end
|
49
|
+
|
50
|
+
def show_pid?
|
51
|
+
@show_pid ||= settings[:show_pid]
|
52
|
+
end
|
53
|
+
|
54
|
+
def trim_leading_whitespace?
|
55
|
+
@trim_leading_whitespace ||= settings[:trim_leading_whitespace]
|
56
|
+
end
|
57
|
+
|
58
|
+
def show_host?
|
59
|
+
@show_host ||= settings[:show_host]
|
60
|
+
end
|
61
|
+
|
62
|
+
def timestamp
|
63
|
+
"#{Time.now.utc.strftime(time_format)} - " if show_time?
|
64
|
+
end
|
65
|
+
|
66
|
+
def pid
|
67
|
+
"#{$$} - " if show_pid?
|
68
|
+
end
|
69
|
+
|
70
|
+
def hostname
|
71
|
+
@hostname ||= "#{`hostname -s`.strip rescue ''} - " if show_host?
|
72
|
+
end
|
73
|
+
|
74
|
+
def to_color(severity)
|
75
|
+
return case severity
|
76
|
+
when ActiveSupport::BufferedLogger::INFO then info_s
|
77
|
+
when ActiveSupport::BufferedLogger::WARN then warn_s
|
78
|
+
when ActiveSupport::BufferedLogger::ERROR then error_s
|
79
|
+
when ActiveSupport::BufferedLogger::FATAL then fatal_s
|
80
|
+
when ActiveSupport::BufferedLogger::DEBUG then debug_s
|
81
|
+
else unknown_s
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def debug_s
|
86
|
+
"DEBUG "
|
87
|
+
end
|
88
|
+
|
89
|
+
def unknown_S
|
90
|
+
"UNKNOWN"
|
91
|
+
end
|
92
|
+
|
93
|
+
def info_s
|
94
|
+
@info_s ||= color("INFO ", '32m')
|
95
|
+
end
|
96
|
+
|
97
|
+
def warn_s
|
98
|
+
@warn_s ||= color("WARN ", '33m')
|
99
|
+
end
|
100
|
+
|
101
|
+
def error_s
|
102
|
+
@error_s ||= color("ERROR ", '31m')
|
103
|
+
end
|
104
|
+
|
105
|
+
def fatal_s
|
106
|
+
@fatal_s ||= color("FATAL ", '1;30;41m')
|
107
|
+
end
|
108
|
+
|
109
|
+
def color(s, color)
|
110
|
+
use_color? ? "\033[#{color}#{s}\033[0m" : s
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
module InstanceMethods
|
116
|
+
|
117
|
+
def add_with_formatting(severity, message = nil, progname = nill, &block)
|
118
|
+
return if @level > severity
|
119
|
+
message = format(severity, (message || (block && block.call) || progname).to_s)
|
120
|
+
add_without_formatting(severity, message, progname)
|
121
|
+
end
|
122
|
+
|
123
|
+
def format(severity, message)
|
124
|
+
"#{self.class.pid}#{self.class.hostname}#{self.class.timestamp}#{self.class.to_color(severity)} - #{trim_leading_whitespace(message)}"
|
125
|
+
end
|
126
|
+
|
127
|
+
def trim_leading_whitespace(m)
|
128
|
+
self.class.trim_leading_whitespace? ? m.gsub(/^\s*/,'') : m
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
132
|
+
|
133
|
+
|
134
|
+
end
|
135
|
+
|
136
|
+
ActiveSupport::BufferedLogger.send :include, FormatLogs
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,142 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: format_logs
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 0.1.0
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- goosetav
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-06-03 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rails
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 7
|
29
|
+
segments:
|
30
|
+
- 3
|
31
|
+
- 0
|
32
|
+
version: "3.0"
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: ore-tasks
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
- 4
|
47
|
+
version: "0.4"
|
48
|
+
type: :development
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: rspec
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ~>
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 11
|
59
|
+
segments:
|
60
|
+
- 2
|
61
|
+
- 4
|
62
|
+
version: "2.4"
|
63
|
+
type: :development
|
64
|
+
version_requirements: *id003
|
65
|
+
description: |
|
66
|
+
Adds some simple formatting to the standard Rails BufferedLogger class.
|
67
|
+
|
68
|
+
This solution aims to be something between the default logging which is missing information such as
|
69
|
+
timestamps, process IDs and severity levels and a full logging solution like log4r
|
70
|
+
|
71
|
+
email: []
|
72
|
+
|
73
|
+
executables: []
|
74
|
+
|
75
|
+
extensions: []
|
76
|
+
|
77
|
+
extra_rdoc_files:
|
78
|
+
- README.rdoc
|
79
|
+
files:
|
80
|
+
- spec/spec_helper.rb
|
81
|
+
- gemspec.yml
|
82
|
+
- ChangeLog.rdoc
|
83
|
+
- .rspec
|
84
|
+
- lib/format_logs/version.rb
|
85
|
+
- .loadpath
|
86
|
+
- .project
|
87
|
+
- Rakefile
|
88
|
+
- LICENSE.txt
|
89
|
+
- README.rdoc
|
90
|
+
- spec/format_logs_spec.rb
|
91
|
+
- .document
|
92
|
+
- lib/format_logs.rb
|
93
|
+
- format_logs.gemspec
|
94
|
+
homepage: http://github.com/goosetav/format_logs
|
95
|
+
licenses:
|
96
|
+
- MIT
|
97
|
+
post_install_message: |
|
98
|
+
*********************************************
|
99
|
+
|
100
|
+
Add the following to your Gemfile to activate
|
101
|
+
|
102
|
+
gem "format_logs"
|
103
|
+
|
104
|
+
Configuration options can be set by:
|
105
|
+
|
106
|
+
FormatLogs.settings = {...}
|
107
|
+
|
108
|
+
see README.rdoc for more details
|
109
|
+
|
110
|
+
*********************************************
|
111
|
+
|
112
|
+
rdoc_options: []
|
113
|
+
|
114
|
+
require_paths:
|
115
|
+
- lib
|
116
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
117
|
+
none: false
|
118
|
+
requirements:
|
119
|
+
- - ">="
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
hash: 3
|
122
|
+
segments:
|
123
|
+
- 0
|
124
|
+
version: "0"
|
125
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
|
+
none: false
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
hash: 3
|
131
|
+
segments:
|
132
|
+
- 0
|
133
|
+
version: "0"
|
134
|
+
requirements: []
|
135
|
+
|
136
|
+
rubyforge_project: format_logs
|
137
|
+
rubygems_version: 1.8.5
|
138
|
+
signing_key:
|
139
|
+
specification_version: 3
|
140
|
+
summary: Adds some basic formatting to the default rails logs
|
141
|
+
test_files:
|
142
|
+
- spec/format_logs_spec.rb
|