zog 0.4.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.
- 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: []
|