zog 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/zog/version.rb +3 -0
- data/lib/zog.rb +175 -0
- metadata +60 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 52d8aa35adbf7eed8579bce46fb9b7baeffa0682
|
4
|
+
data.tar.gz: a570f8e1ee6325bc7ff5eb423995829a0e4d4d91
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2299f8bfe79a5231e466fc8b9f337e0ca5be3de1a542ae01651770ed40ca6729d97f208a30a2b3fe3740eeb7583724aaaccff8eace57719cd019acda0da1615b
|
7
|
+
data.tar.gz: 60b83c775285cc718a2a28054ce74f1469ed1ad4180372cadfa7f17aeba9e45f5c65de0665906b02ee1ad65a4217ddfcce6eb22c2abf0bdcfa69a3adbbfdda47
|
data/lib/zog/version.rb
ADDED
data/lib/zog.rb
ADDED
@@ -0,0 +1,175 @@
|
|
1
|
+
# Zog - an alternate logger
|
2
|
+
# (C) 2012, 2014, 2016 Lyjia
|
3
|
+
# http://www.github.com/lyjia
|
4
|
+
# version 0.4
|
5
|
+
|
6
|
+
class Zog
|
7
|
+
|
8
|
+
if defined?(Rails)
|
9
|
+
@@log_dir = "#{Rails.root}/log"
|
10
|
+
else
|
11
|
+
@@log_dir = "#{Dir.pwd}/log"
|
12
|
+
end
|
13
|
+
|
14
|
+
Dir.mkdir(@@log_dir) unless File.exist?(@@log_dir)
|
15
|
+
@@log_filename = "#{@@log_dir}/Zog.log"
|
16
|
+
|
17
|
+
@@log = File.open(@@log_filename, 'a')
|
18
|
+
@@silenced = false
|
19
|
+
|
20
|
+
LOG_CATS = { debug: "[35m",
|
21
|
+
info: "[34m",
|
22
|
+
|
23
|
+
warn: "[33m",
|
24
|
+
error: "[31m",
|
25
|
+
fatal: "[31;1m",
|
26
|
+
other: "[32m" }
|
27
|
+
|
28
|
+
ESC_PREFIX = "\e"
|
29
|
+
COLOR_NORMAL = "[0m"
|
30
|
+
TYPES = [:both, :display, :log]
|
31
|
+
|
32
|
+
@@allowed_disp = LOG_CATS.keys
|
33
|
+
@@allowed_log = LOG_CATS.keys
|
34
|
+
|
35
|
+
|
36
|
+
# User-facing functions
|
37
|
+
def self.allow_only(type = :both, cats = [])
|
38
|
+
raise ArgumentError, "Invalid type #{type}, must be one of these symbols: "<<TYPES.join(" ") unless TYPES.include?(type)
|
39
|
+
|
40
|
+
cats.each do |c|
|
41
|
+
raise ArgumentError, "Invalid category #{c}, must be one of these symbols: "<<LOG_CATS.keys.join(" ") unless LOG_CATS.keys.include?(c)
|
42
|
+
end
|
43
|
+
|
44
|
+
if type == :both || type == :display
|
45
|
+
@@allowed_disp = []
|
46
|
+
@@allowed_disp << cats
|
47
|
+
@@allowed_disp.flatten!
|
48
|
+
end
|
49
|
+
|
50
|
+
if type == :both || type == :log
|
51
|
+
@@allowed_log = []
|
52
|
+
@@allowed_log << cats
|
53
|
+
@@allowed_log.flatten!
|
54
|
+
end
|
55
|
+
|
56
|
+
self.info("Allowed categories changed. Display: #{@@allowed_disp}, log: #{@@allowed_log}")
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
def self.deny(type = :both, cats = [])
|
62
|
+
raise ArgumentError, "Invalid type, must be one of these symbols: "<<TYPES.join(" ") unless TYPES.include?(type)
|
63
|
+
|
64
|
+
cats.each do |c|
|
65
|
+
if type == :both || type == :display
|
66
|
+
@@allowed_disp.delete(c)
|
67
|
+
end
|
68
|
+
|
69
|
+
if type == :both || type == :log
|
70
|
+
@@allowed_log.delete(c)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
self.info("Allowed categories changed. Display: #{@@allowed_disp}, log: #{@@allowed_log}")
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
def self.reset
|
79
|
+
@@allowed_disp = LOG_CATS.keys
|
80
|
+
@@allowed_log = LOG_CATS.keys
|
81
|
+
self.info("Allowed categories changed. Display: #{@@allowed_disp}, log: #{@@allowed_log}")
|
82
|
+
end
|
83
|
+
|
84
|
+
|
85
|
+
def self.shut_up!
|
86
|
+
Zog.debug("Shutting up...")
|
87
|
+
@@silenced = true
|
88
|
+
end
|
89
|
+
|
90
|
+
|
91
|
+
def self.talk_again!
|
92
|
+
@@silenced = false
|
93
|
+
Zog.debug("I can talk again!")
|
94
|
+
end
|
95
|
+
|
96
|
+
|
97
|
+
# responds to Zog.info, Zog.error, etc
|
98
|
+
def self.method_missing(meth, *args, &block)
|
99
|
+
|
100
|
+
#$stderr.puts "MM: Is meth '#{meth}' a valid word from #{LOG_CATS.keys}? (#{LOG_CATS.keys.include?(meth)})"
|
101
|
+
meth = meth.downcase.to_sym
|
102
|
+
|
103
|
+
if LOG_CATS.keys.include?(meth)
|
104
|
+
self::msg(meth, args[0])
|
105
|
+
else
|
106
|
+
super
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
private
|
113
|
+
|
114
|
+
# internal functions
|
115
|
+
def self.format_message(severity, msg)
|
116
|
+
hello = self::get_my_caller()
|
117
|
+
["#{Time.now.strftime("%Y%m%d-%H%M%S")} #{severity} #{hello}():", "#{msg}"]
|
118
|
+
end
|
119
|
+
|
120
|
+
|
121
|
+
def self.colorize(severity, msg)
|
122
|
+
|
123
|
+
color = LOG_CATS[severity.downcase.to_sym]
|
124
|
+
|
125
|
+
col = "#{ESC_PREFIX}#{color}"
|
126
|
+
if [:error, :fatal].include?(severity)
|
127
|
+
white = "#{ESC_PREFIX}[37;1m"
|
128
|
+
else
|
129
|
+
white = "#{ESC_PREFIX}#{COLOR_NORMAL}"
|
130
|
+
end
|
131
|
+
reset = "#{ESC_PREFIX}#{COLOR_NORMAL}"
|
132
|
+
|
133
|
+
return "#{col}#{msg[0]} #{white}#{msg[1]}#{reset}"
|
134
|
+
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
def self.msg(level, msg)
|
139
|
+
m = Zog::format_message(level, msg)
|
140
|
+
|
141
|
+
displayer = :puts
|
142
|
+
writer = :Zog
|
143
|
+
|
144
|
+
unless @@silenced == true
|
145
|
+
|
146
|
+
if @@allowed_disp.include?(level)
|
147
|
+
case displayer
|
148
|
+
when :puts
|
149
|
+
$stderr.puts Zog::colorize(level, m)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
if @@allowed_log.include?(level)
|
154
|
+
case writer
|
155
|
+
when :Zog
|
156
|
+
@@log.puts m.join(" ")
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
end
|
161
|
+
|
162
|
+
end
|
163
|
+
|
164
|
+
|
165
|
+
def self.get_my_caller()
|
166
|
+
#s = caller.grep(/\/app\//)[2]
|
167
|
+
#/in .([^']+)/.match(s)
|
168
|
+
#ap caller
|
169
|
+
#$1
|
170
|
+
step = 3
|
171
|
+
caller(step+1)[0][/`.*'/][1..-2]
|
172
|
+
end
|
173
|
+
|
174
|
+
|
175
|
+
end
|
metadata
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: zog
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Lyjia
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-06-24 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.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
description: Colorizing, introspective, independent logging library.
|
28
|
+
email:
|
29
|
+
- tom@tomcorelis.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- lib/zog.rb
|
35
|
+
- lib/zog/version.rb
|
36
|
+
homepage: ''
|
37
|
+
licenses:
|
38
|
+
- MIT
|
39
|
+
metadata: {}
|
40
|
+
post_install_message:
|
41
|
+
rdoc_options: []
|
42
|
+
require_paths:
|
43
|
+
- lib
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
requirements: []
|
55
|
+
rubyforge_project:
|
56
|
+
rubygems_version: 2.4.5.1
|
57
|
+
signing_key:
|
58
|
+
specification_version: 4
|
59
|
+
summary: Logging library for Ruby projects with colorization and caller introspection
|
60
|
+
test_files: []
|