logger_json 1.0.1 → 1.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ef3a03e03cd1d2cc20c4b86979b6636f3b0b4d6ca00a08d2f28842066c00bff
4
- data.tar.gz: d6489546e27a6d5025b6301348734a112d9e65f233f58c96e06b9edf7b0f77fc
3
+ metadata.gz: d77ed01ffa4b6b2efca7dc90bf13728c8c55c9610657c1dee14e0aa8d75429f3
4
+ data.tar.gz: 3050046c3bb5c23dc8d78dc9ed99358f1e326ac838fa3cf9299906ce6a2a439a
5
5
  SHA512:
6
- metadata.gz: b34570f3fccf06e99a0e6d6da2fbf2130c6ae335f6a5f1ba5c877c479b8d25cb9bd94647f12c52d466195dab949f77eb5e456ba146f352c2192ccc3a09c22b06
7
- data.tar.gz: 84553f4d59f33d11f597073684883ffb00b923e9c7df014234070135c877a55704d0ab993a257209a11d5b0afaa447c9a68911eb5cd3c9e49e388fa483791efe
6
+ metadata.gz: f0cbead5a1bc8c32cb7b80e9119d113491cb38ccbf6eba8a0619e776bb3173da0ceb8f7b9dbea8e104cac9b3e7c9ecbe903f355d134282e028f1769798fef032
7
+ data.tar.gz: c4d2e187fda88afca2144740298e8c348e304e3e3e3b05f0092ee191fce4c753784107970f7f8f8d9de33e5d3a37f087828509880f46ec99213a061b2ffd5603
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ /logs
data/CHANGELOG.md ADDED
File without changes
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ ruby '>= 1.9.0'
6
+
7
+ gem 'rubocop', require: false
8
+ gem 'pry', '~> 0.12.2'
9
+ gem "minitest"
data/Gemfile.lock ADDED
@@ -0,0 +1,38 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ ast (2.4.0)
5
+ coderay (1.1.2)
6
+ jaro_winkler (1.5.4)
7
+ method_source (0.9.2)
8
+ minitest (5.14.0)
9
+ parallel (1.19.1)
10
+ parser (2.7.0.2)
11
+ ast (~> 2.4.0)
12
+ pry (0.12.2)
13
+ coderay (~> 1.1.0)
14
+ method_source (~> 0.9.0)
15
+ rainbow (3.0.0)
16
+ rubocop (0.79.0)
17
+ jaro_winkler (~> 1.5.1)
18
+ parallel (~> 1.10)
19
+ parser (>= 2.7.0.1)
20
+ rainbow (>= 2.2.2, < 4.0)
21
+ ruby-progressbar (~> 1.7)
22
+ unicode-display_width (>= 1.4.0, < 1.7)
23
+ ruby-progressbar (1.10.1)
24
+ unicode-display_width (1.6.1)
25
+
26
+ PLATFORMS
27
+ ruby
28
+
29
+ DEPENDENCIES
30
+ minitest
31
+ pry (~> 0.12.2)
32
+ rubocop
33
+
34
+ RUBY VERSION
35
+ ruby 2.4.9p362
36
+
37
+ BUNDLED WITH
38
+ 1.17.3
data/MIT-LICENSE ADDED
@@ -0,0 +1 @@
1
+ Copyright 2020 .
data/README.md ADDED
@@ -0,0 +1,73 @@
1
+ **LoggerJson** is a gem written in Ruby that adds new functionality, without changing the function of the Logger class methods, which creates the logs in the json format.
2
+
3
+ **Getting started**
4
+
5
+ LoggerJson's installation is pretty standard:
6
+
7
+ ```bash
8
+ gem install logger_json
9
+ ```
10
+
11
+ Add the following line to your `Gemfile`:
12
+
13
+ ```ruby
14
+ gem 'logger_json'
15
+ ```
16
+
17
+ Then run `bundle install`
18
+
19
+ Just initialize the gem and watch the magic happen
20
+
21
+ ```ruby
22
+ require 'logger_json'
23
+ ```
24
+
25
+ **Parameters**
26
+
27
+ ```ruby
28
+ {
29
+ date: "2020-02-05T13:46:11.026134758+00:00", #iso8601
30
+ host: "https://www.r7.com/",
31
+ thread: 'current_thread',
32
+ methods: ['create_json'],
33
+ level: 'info',
34
+ message: 'LoggerJson is a gem written in Ruby that ...'
35
+ }
36
+ ```
37
+
38
+ **To add parameters in the json logger**
39
+
40
+ ```ruby
41
+ more_params = {key1: data, key2: data ... keyN: data}
42
+ Logger.new('output').warn(message, more_params)
43
+ ```
44
+
45
+ **Compatibility**
46
+
47
+ - Ruby 1.9+
48
+
49
+ **Running tests**
50
+
51
+ LoggerJson uses [Mini Test](https://github.com/seattlerb/minitest) as test framework.
52
+
53
+ * Ruby version > 2.0
54
+
55
+ * Running all tests:
56
+
57
+ ```bash
58
+ ruby test/test.rb
59
+ ```
60
+
61
+ * Runnin tests for an specific file:
62
+
63
+ ```bash
64
+ ruby test/create_file_spec.rb
65
+ ```
66
+
67
+ **Changelog**
68
+
69
+ LoggerJson changelog is available [here](https://gitlab.ir7.com.br/r7/logger-json/blob/master/CHANGELOG.md).
70
+
71
+ **Copyright**
72
+
73
+ Copyright (c) 2020
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "logger_json"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,9 @@
1
+ class Logger
2
+ alias_method :old_debug, :debug
3
+
4
+ def debug(*args, &block)
5
+ create_file args, :debug
6
+ return send :old_debug, args[0] { block } if block_given?
7
+ send :old_debug, args[0]
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class Logger
2
+ alias_method :old_error, :error
3
+
4
+ def error(*args, &block)
5
+ create_file args, :error
6
+ return send :old_error, args[0] { block } if block_given?
7
+ send :old_error, args[0]
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class Logger
2
+ alias_method :old_fatal, :fatal
3
+
4
+ def fatal(*args, &block)
5
+ create_file args, :fatal
6
+ return send :old_fatal, args[0] { block } if block_given?
7
+ send :old_fatal, args[0]
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class Logger
2
+ alias_method :old_info, :info
3
+
4
+ def info(*args, &block)
5
+ create_file args
6
+ return send :old_info, args[0] { block } if block_given?
7
+ send :old_info, args[0]
8
+ end
9
+ end
@@ -0,0 +1,50 @@
1
+ module LoggerJson
2
+ class Model
3
+ attr_accessor :json
4
+
5
+ def initialize(message, type)
6
+ @type = type
7
+ @json = convert_to_json message
8
+ end
9
+
10
+ private
11
+
12
+ def convert_to_json(msg)
13
+ return log(msg[0]).to_json if msg[1].nil?
14
+ return (log(msg[0]).merge(msg[1])).to_json if msg[1].is_a? Hash
15
+ return add_array_in_log msg if msg[1].is_a? Array
16
+ add_string_in_log msg
17
+ end
18
+
19
+ def log(message)
20
+ {
21
+ date: DateTime.now.iso8601(9),
22
+ host: IO.popen('hostname').readlines[0].strip,
23
+ thread: Thread.current,
24
+ methods: methods,
25
+ level: @type,
26
+ message: message
27
+ }
28
+ end
29
+
30
+ def add_array_in_log(msg)
31
+ logs = log msg[0]
32
+ msg[1].select.with_index {|val, index| logs[index] = val}
33
+ logs.to_json
34
+ end
35
+
36
+ def methods
37
+ array = []
38
+ caller.join('\n').scan(/\`([a-z_-]*)\'/) do |match|
39
+ array << match[0] unless array.include? match[0]
40
+ end
41
+ array
42
+ end
43
+
44
+ def add_string_in_log(msg)
45
+ logs = log msg[0]
46
+ logs[:log] = msg[1]
47
+ logs.to_json
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,9 @@
1
+ class Logger
2
+ alias_method :old_warn, :warn
3
+
4
+ def warn(*args, &block)
5
+ create_file args, :warn
6
+ return send :old_warn, args[0] { block } if block_given?
7
+ send :old_warn, args[0]
8
+ end
9
+ end
@@ -0,0 +1,21 @@
1
+ class Logger
2
+ class << self
3
+ def json_path
4
+ LoggerJson::Text::PATH
5
+ end
6
+ end
7
+
8
+ private
9
+
10
+ def create_file(message, type=:info)
11
+ path = filename || Logger.json_path
12
+ json = LoggerJson::Model.new(message, type).json
13
+ LoggerJson::Writter.logger_json(path, json)
14
+ end
15
+
16
+ def filename
17
+ path = instance_variable_get("@logdev").filename
18
+ return if path.nil?
19
+ path.gsub(".log","-json.log")
20
+ end
21
+ end
@@ -0,0 +1,6 @@
1
+ module LoggerJson
2
+ module Text
3
+ LOGGER_JSON = 'From now on every log will generate a json'.freeze
4
+ PATH = 'logs/user-logs.log'
5
+ end
6
+ end
@@ -0,0 +1,3 @@
1
+ module LoggerJson
2
+ VERSION = "1.0.2".freeze
3
+ end
@@ -0,0 +1,8 @@
1
+ module LoggerJson
2
+ class Writter
3
+ def self.logger_json(path, json)
4
+ return puts json if path.nil?
5
+ open(path, 'a') { |f| f.puts json}
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,30 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ lib = File.expand_path("../lib", __FILE__)
5
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
+ require "logger_json/version"
7
+
8
+ Gem::Specification.new do |spec|
9
+ spec.name = "logger_json"
10
+ spec.version = LoggerJson::VERSION.dup
11
+ spec.authors = ["Vinicius Freire"]
12
+ spec.email = ["vfoliveira@rederecord.com.br"]
13
+
14
+ spec.summary = "Flexible Json Logger solution for Ruby"
15
+ spec.description = "LoggerJson is a gem written in Ruby that adds new functionality, without changing the function of the Logger class methods, which creates the logs in the json format."
16
+ spec.homepage = "https://gitlab.ir7.com.br/r7/logger-json"
17
+ spec.license = "MIT"
18
+ spec.required_ruby_version = '>= 1.9.0'
19
+
20
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
21
+ f.match(%r{^(test|spec|features)/})
22
+ end
23
+ spec.bindir = "exe"
24
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
+ spec.require_paths = ["lib"]
26
+
27
+ spec.add_development_dependency "bundler", "~> 1.16"
28
+ spec.add_development_dependency "rake", "~> 10.0"
29
+ spec.add_development_dependency "rspec", "~> 3.0"
30
+ end
metadata CHANGED
@@ -1,24 +1,86 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logger_json
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vinicius Freire
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
11
  date: 2020-02-05 00:00:00.000000000 Z
12
- dependencies: []
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.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
13
55
  description: LoggerJson is a gem written in Ruby that adds new functionality, without
14
56
  changing the function of the Logger class methods, which creates the logs in the
15
57
  json format.
16
- email: vfoliveira@rederecord.com.br
58
+ email:
59
+ - vfoliveira@rederecord.com.br
17
60
  executables: []
18
61
  extensions: []
19
62
  extra_rdoc_files: []
20
63
  files:
64
+ - ".gitignore"
65
+ - CHANGELOG.md
66
+ - Gemfile
67
+ - Gemfile.lock
68
+ - MIT-LICENSE
69
+ - README.md
70
+ - bin/console
71
+ - bin/setup
21
72
  - lib/logger_json.rb
73
+ - lib/logger_json/json/debug.rb
74
+ - lib/logger_json/json/error.rb
75
+ - lib/logger_json/json/fatal.rb
76
+ - lib/logger_json/json/info.rb
77
+ - lib/logger_json/json/model.rb
78
+ - lib/logger_json/json/warn.rb
79
+ - lib/logger_json/logger.rb
80
+ - lib/logger_json/text.rb
81
+ - lib/logger_json/version.rb
82
+ - lib/logger_json/writter.rb
83
+ - logger_json.gemspec
22
84
  homepage: https://gitlab.ir7.com.br/r7/logger-json
23
85
  licenses:
24
86
  - MIT