cuvva_log 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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2a58ab1af6acd55df92f89541d078a5a000942a4
4
+ data.tar.gz: 1f90497153838aec06bebdd1c2b4fef96a9b753f
5
+ SHA512:
6
+ metadata.gz: 9c86fbad939b7d27c6c174507798ca88da6cade5ee3f3ad7f6ea290a3d313fada1fa67dfd5b279266434c6c82a3c7f7ae0a2fdb6891e2ad8cfe58e5114eabc9c
7
+ data.tar.gz: ee5c45bdc78eba6cd59caf94ca3873dd95b98c3ddfb606588bde00818734764eea391cd89211177cd8939b0f5ecd46e91a69b85efe61308e426a7fd6bc5bd730
@@ -0,0 +1,42 @@
1
+ require 'json'
2
+
3
+ class CuvvaError < StandardError
4
+ @@http_status_map = { }
5
+
6
+ attr_accessor :code
7
+ attr_accessor :reasons
8
+ attr_accessor :meta
9
+ attr_reader :stack
10
+ attr_reader :http_status
11
+
12
+ def initialize(*args)
13
+ code, reasons, meta = args
14
+
15
+ if meta === nil && !reasons.is_a?(Array)
16
+ meta = reasons
17
+ reasons = nil
18
+ end
19
+
20
+ @code = code
21
+ @reasons = reasons
22
+ @meta = meta
23
+ @stack = caller
24
+ @http_status = CuvvaError.http_status_map.has_key?(code) ?
25
+ CuvvaError.http_status_map[code] :
26
+ 500
27
+ end
28
+
29
+ def to_json
30
+ JSON.generate(to_hash)
31
+ end
32
+
33
+ def self.http_status_map
34
+ @@http_status_map
35
+ end
36
+
37
+ private
38
+
39
+ def to_hash
40
+ { :code => self.code, :reasons => self.reasons, :meta => self.meta }
41
+ end
42
+ end
data/lib/cuvva_log.rb ADDED
@@ -0,0 +1,81 @@
1
+ require 'cuvva_error'
2
+ require 'cuvva_log_handler'
3
+
4
+ class Log
5
+ ERROR_LEVELS = {
6
+ :debug => 0,
7
+ :info => 1,
8
+ :warn => 2,
9
+ :error => 3,
10
+ :fatal => 4,
11
+ }
12
+
13
+ def self.get_level(level_name)
14
+ ERROR_LEVELS[level_name]
15
+ end
16
+
17
+ @@min_log_level = get_level(:info)
18
+ @@default_handler = LogHandler.new
19
+ @@handlers = Hash[ [:debug, :info, :warn, :error, :fatal].collect do |a|
20
+ [a, @@default_handler]
21
+ end ]
22
+
23
+ def self.debug(*args)
24
+ make_error(:debug, *args)
25
+ end
26
+
27
+ def self.info(*args)
28
+ make_error(:info, *args)
29
+ end
30
+
31
+ def self.warn(*args)
32
+ make_error(:warn, *args)
33
+ end
34
+
35
+ def self.error(*args)
36
+ make_error(:error, *args)
37
+ end
38
+
39
+ def self.fatal(*args)
40
+ make_error(:fatal, *args)
41
+ end
42
+
43
+ def self.min_log_level
44
+ @@min_log_level
45
+ end
46
+
47
+ def self.min_log_level=(log_level)
48
+ @@min_log_level = get_level(log_level)
49
+ end
50
+
51
+ def self.set_http_statuses(error_descriptor)
52
+ error_descriptor.each do |key, val|
53
+ CuvvaError.http_status_map[key] = val[:httpStatus]
54
+ end
55
+ end
56
+
57
+ def self.set_handler(*args)
58
+ if args.length == 1
59
+ handler = args[0]
60
+
61
+ for level in ERROR_LEVELS.keys
62
+ set_handler(level, handler)
63
+ end
64
+ else
65
+ level, handler = args
66
+ @@handlers[level] = handler
67
+ end
68
+ end
69
+
70
+ private
71
+
72
+ def self.handle_error(level, error)
73
+ @@handlers[level].handle(level, error)
74
+ end
75
+
76
+ def self.make_error(level, *args)
77
+ error = args[0].is_a?(CuvvaError) ? args[0] : CuvvaError.new(*args)
78
+ handle_error(level, error)
79
+ error
80
+ end
81
+ end
@@ -0,0 +1,15 @@
1
+ require 'cuvva_log'
2
+
3
+ class LogHandler
4
+ def handle(level, error)
5
+ return if Log.get_level(level) < Log.min_log_level
6
+
7
+ error_string = "#{level}:#{error.to_json}"
8
+
9
+ if [ :warn, :error, :fatal ].include?(level)
10
+ STDERR.puts error_string
11
+ else
12
+ puts error_string
13
+ end
14
+ end
15
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cuvva_log
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Jack Fransham
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-10 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Super-simple logs for the Ruby-based Cuvva systems
14
+ email: jack.fransham@cuvva.co
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/cuvva_error.rb
20
+ - lib/cuvva_log.rb
21
+ - lib/cuvva_log_handler.rb
22
+ homepage: https://github.com/cuvva/cuvva-log-ruby
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.2.2
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: Super-simple logs for the Ruby-based Cuvva systems
46
+ test_files: []