my_stuff-logger 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +64 -0
- data/example.rb +70 -0
- data/lib/my_stuff/logger.rb +2 -1
- metadata +4 -2
data/README.rdoc
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
= What is this?
|
2
|
+
|
3
|
+
A drop-in replacement for Ruby's standard Logger class, if you're just
|
4
|
+
using the basic features.
|
5
|
+
|
6
|
+
= How do I get it?
|
7
|
+
|
8
|
+
gem install my_stuff-logger
|
9
|
+
|
10
|
+
= How do I use it?
|
11
|
+
|
12
|
+
Create an instance, then just like the standard Logger class; take a look
|
13
|
+
at example.rb.
|
14
|
+
|
15
|
+
= Why would I use it instead?
|
16
|
+
|
17
|
+
http://f.cl.ly/items/1M0f083q0Q3p3u103a3o/Image%202011.08.30%2008:06:08.png
|
18
|
+
|
19
|
+
== It's got more information.
|
20
|
+
|
21
|
+
* The filename, line number, and method are *always* included
|
22
|
+
* By default, a backtrace is included for errors and fatals. This can be
|
23
|
+
tuned to any level, including even for debug, or for none at all.
|
24
|
+
|
25
|
+
File names are shown relative to a choosable root (which defaults to
|
26
|
+
File.dirname(File.expand_path($0))) — if a file isn't in that root, you
|
27
|
+
get the full path, not '../../../../../../foo/bar/baz' :p
|
28
|
+
|
29
|
+
== It's easier to see what's important.
|
30
|
+
|
31
|
+
http://f.cl.ly/items/1I0p3c3J2i1u0D1E3Q3s/Image%202011.08.30%2020:05:20.png
|
32
|
+
|
33
|
+
== You can choose what's relevant.
|
34
|
+
|
35
|
+
There's per-app settings for where output goes, what levels are logged,
|
36
|
+
and what levels get backtraces — but you can also change this per-instance,
|
37
|
+
and it'll stick that way even if the global is changed later.
|
38
|
+
|
39
|
+
== You can plug in your own filters to make the log messages more readable.
|
40
|
+
|
41
|
+
A couple of examples:
|
42
|
+
|
43
|
+
* The priority colorization is a filter
|
44
|
+
* There's also a filter shipped (but not enabled by default) for use with
|
45
|
+
{MyStuff::MultiDB}[https://github.com/fredemmott/my_stuff-multidb], which
|
46
|
+
turns 'Foo::MYSTUFF_MULTIDB_DB_aloadofhex::Bar' into
|
47
|
+
'Foo::<localhost:3307/test>::Bar'
|
48
|
+
|
49
|
+
These filters are only enabled for log viewing; they don't affect what's
|
50
|
+
written to disk.
|
51
|
+
|
52
|
+
By default, colors are enabled if the output device (STDOUT usually) is
|
53
|
+
a TTY, but disabled otherwised — of course, this can be overidden.
|
54
|
+
|
55
|
+
== It's easier/faster to machine-process.
|
56
|
+
|
57
|
+
* The number in the second field is a unix timestamp
|
58
|
+
* The filename is always in the same place, in the same format, making it
|
59
|
+
easier to use with grep, or something more in-depth.
|
60
|
+
|
61
|
+
= What's coming soon?
|
62
|
+
|
63
|
+
* a 'msl-cat' command, applying the filters
|
64
|
+
* a 'msl-tail' command, emulating/wrapping 'tail -F'
|
data/example.rb
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Copyright 2011-present Fred Emmott. See COPYING file.
|
3
|
+
|
4
|
+
_DIR = File.dirname(File.expand_path(__FILE__))
|
5
|
+
$LOAD_PATH.push(File.join(_DIR, 'lib'))
|
6
|
+
|
7
|
+
require 'optparse'
|
8
|
+
|
9
|
+
options = {}
|
10
|
+
|
11
|
+
optparse = OptionParser.new do |opts|
|
12
|
+
opts.on(
|
13
|
+
'--level=debug|info|warn|error|fatal|disable',
|
14
|
+
'What level of output to show',
|
15
|
+
/^debug|info|warn|error|fatal|disable$/
|
16
|
+
) do |level|
|
17
|
+
options[:level] = level.to_sym
|
18
|
+
end
|
19
|
+
|
20
|
+
opts.on(
|
21
|
+
'--backtrace-level=debug|info|warn|error|fatal|disable',
|
22
|
+
'What level of output to show backtraces for',
|
23
|
+
/^debug|info|warn|error|fatal|disable$/
|
24
|
+
) do |level|
|
25
|
+
options[:backtrace_level] = level.to_sym
|
26
|
+
end
|
27
|
+
|
28
|
+
opts.on(
|
29
|
+
'--colors=yes|no|auto',
|
30
|
+
'Colorize output',
|
31
|
+
/^yes|no|auto$/
|
32
|
+
) do |value|
|
33
|
+
case value
|
34
|
+
when 'yes'
|
35
|
+
options[:colorize] = true
|
36
|
+
when 'no'
|
37
|
+
options[:colorize] = false
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
optparse.parse!
|
42
|
+
|
43
|
+
require 'my_stuff/logger'
|
44
|
+
require 'my_stuff/logger/reader'
|
45
|
+
|
46
|
+
require 'logger' # Ruby's standard one
|
47
|
+
|
48
|
+
# We set the output device of the logger to be the reader.
|
49
|
+
# This gives us rainbows and unicorns — well, colourized output at least.
|
50
|
+
reader = MyStuff::Logger::Reader.new(options)
|
51
|
+
options[:device] = reader
|
52
|
+
logger = MyStuff::Logger.new(options)
|
53
|
+
|
54
|
+
def compare logger
|
55
|
+
puts '=== Comparison ==='
|
56
|
+
Logger.new(STDOUT).error "This is Ruby's standard Logger"
|
57
|
+
logger.error "This is MyStuff::Logger"
|
58
|
+
end
|
59
|
+
|
60
|
+
def spam logger
|
61
|
+
puts '=== Spamming All Log Levels ==='
|
62
|
+
logger.debug 'nyan nyan nyan'
|
63
|
+
logger.info ({:what => 'cool story bro'})
|
64
|
+
logger.warn "IMA CHARGIN' MAH LAZER"
|
65
|
+
logger.error "Somebody set us up the bomb"
|
66
|
+
logger.fatal "No more kitten pictures."
|
67
|
+
end
|
68
|
+
|
69
|
+
compare logger
|
70
|
+
spam logger
|
data/lib/my_stuff/logger.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# Copyright 2011-present Fred Emmott. See COPYING file.
|
2
2
|
|
3
|
+
require 'my_stuff/logger/reader'
|
3
4
|
require 'my_stuff/logger/writer'
|
4
5
|
|
5
6
|
module MyStuff
|
@@ -12,7 +13,7 @@ module MyStuff
|
|
12
13
|
attr_writer :device, :level, :backtrace_level, :root_path
|
13
14
|
|
14
15
|
def device
|
15
|
-
@device ||= STDOUT
|
16
|
+
@device ||= STDOUT.tty? ? MyStuff::Logger::Reader.new : STDOUT
|
16
17
|
end
|
17
18
|
|
18
19
|
def level
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: my_stuff-logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-08-
|
12
|
+
date: 2011-08-31 00:00:00.000000000Z
|
13
13
|
dependencies: []
|
14
14
|
description: ''
|
15
15
|
email:
|
@@ -19,6 +19,8 @@ extensions: []
|
|
19
19
|
extra_rdoc_files: []
|
20
20
|
files:
|
21
21
|
- COPYING
|
22
|
+
- README.rdoc
|
23
|
+
- example.rb
|
22
24
|
- lib/my_stuff/logger/levels.rb
|
23
25
|
- lib/my_stuff/logger/reader.rb
|
24
26
|
- lib/my_stuff/logger/reader_filter.rb
|