log_magic 0.0.1
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/bin/log_magic +8 -0
- data/bin/rebuild +2 -0
- data/lib/log_magic/log_listener.rb +14 -0
- data/lib/log_magic/printers/searchkick_printer.rb +22 -0
- data/lib/log_magic/refiners/searchkick_refiner.rb +16 -0
- data/lib/log_magic/utils/json_utils.rb +9 -0
- data/lib/log_magic.rb +46 -0
- metadata +80 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 142e9bf7993790706efd5abd39ee6d982caf9d68
|
4
|
+
data.tar.gz: 47141e7128a5fb074b484d299536f304a043513e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d8cc18c555aae5aa378b51f36a69f70bf250af9b832f707158dd6d3befb4ac75751823e5cd26ce1ec97974e8bcdd5ca64ae01250669b0fc646d2a6153936937f
|
7
|
+
data.tar.gz: 75344a1374e3f47403f12ff70ee4d4f2d18254428bb8690b95fcbcf0beb0d0da30ffdf5d5803d9fd615283da1aa7b3cd545a3ac16085c7e83f9161f2276946f7
|
data/bin/log_magic
ADDED
data/bin/rebuild
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
class LogMagic::LogListener
|
2
|
+
def initialize(log_file_name)
|
3
|
+
@log_file_name = log_file_name
|
4
|
+
end
|
5
|
+
|
6
|
+
def listen
|
7
|
+
File.open(@log_file_name) do |log|
|
8
|
+
log.extend(File::Tail)
|
9
|
+
log.interval = 1
|
10
|
+
log.backward(1)
|
11
|
+
log.tail { |line| yield line }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
class LogMagic::SearchkickPrinter
|
4
|
+
include ::LogMagic::JSONUtils
|
5
|
+
|
6
|
+
def initialize(line)
|
7
|
+
@line = line
|
8
|
+
end
|
9
|
+
|
10
|
+
def extract_query_json
|
11
|
+
@line.match(/'.*'/)[0][1..-2]
|
12
|
+
end
|
13
|
+
|
14
|
+
def print
|
15
|
+
"""
|
16
|
+
ElasticSearch query generated by Searchkick
|
17
|
+
<------------------------------------------
|
18
|
+
#{pretty_print_json(extract_query_json)}
|
19
|
+
------------------------------------------>
|
20
|
+
"""
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class LogMagic::SearchkickRefiner
|
2
|
+
attr_accessor :lines
|
3
|
+
|
4
|
+
def initialize
|
5
|
+
@lines = []
|
6
|
+
end
|
7
|
+
|
8
|
+
def matches?
|
9
|
+
lines.last =~ /Search[^c]*curl/
|
10
|
+
end
|
11
|
+
|
12
|
+
def output
|
13
|
+
searchkick_printer = ::LogMagic::SearchkickPrinter.new(lines.last)
|
14
|
+
searchkick_printer.print
|
15
|
+
end
|
16
|
+
end
|
data/lib/log_magic.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'file-tail'
|
2
|
+
|
3
|
+
class LogMagic
|
4
|
+
def initialize(log_file_name)
|
5
|
+
@log_file_name = log_file_name
|
6
|
+
@refiners = []
|
7
|
+
add_searchkick_refiner
|
8
|
+
end
|
9
|
+
|
10
|
+
def initialize_listener
|
11
|
+
@log_listener = LogListener.new(@log_file_name)
|
12
|
+
end
|
13
|
+
|
14
|
+
def start
|
15
|
+
@log_listener.listen do |line|
|
16
|
+
add_line_to_refiners(line)
|
17
|
+
check_for_refiner_output do |output|
|
18
|
+
puts output
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def add_line_to_refiners(line)
|
24
|
+
@refiners.each do |refiner|
|
25
|
+
refiner.lines << line
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def check_for_refiner_output
|
30
|
+
@refiners.any? do |refiner|
|
31
|
+
if refiner.matches?
|
32
|
+
yield refiner.output
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def add_searchkick_refiner
|
38
|
+
@refiners << SearchkickRefiner.new
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
require 'log_magic/utils/json_utils'
|
44
|
+
require 'log_magic/log_listener'
|
45
|
+
require 'log_magic/refiners/searchkick_refiner'
|
46
|
+
require 'log_magic/printers/searchkick_printer'
|
metadata
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: log_magic
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Manuel Korfmann
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-12-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: file-tail
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: byebug
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: "\n By analysing your development.log,\n log_magic gives you insights
|
42
|
+
about your services.\n "
|
43
|
+
email: manu@korfmann.info
|
44
|
+
executables:
|
45
|
+
- log_magic
|
46
|
+
extensions: []
|
47
|
+
extra_rdoc_files: []
|
48
|
+
files:
|
49
|
+
- bin/log_magic
|
50
|
+
- bin/rebuild
|
51
|
+
- lib/log_magic.rb
|
52
|
+
- lib/log_magic/log_listener.rb
|
53
|
+
- lib/log_magic/printers/searchkick_printer.rb
|
54
|
+
- lib/log_magic/refiners/searchkick_refiner.rb
|
55
|
+
- lib/log_magic/utils/json_utils.rb
|
56
|
+
homepage: http://rubygems.org/gems/log_magick
|
57
|
+
licenses:
|
58
|
+
- MIT
|
59
|
+
metadata: {}
|
60
|
+
post_install_message:
|
61
|
+
rdoc_options: []
|
62
|
+
require_paths:
|
63
|
+
- lib
|
64
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
requirements: []
|
75
|
+
rubyforge_project:
|
76
|
+
rubygems_version: 2.6.8
|
77
|
+
signing_key:
|
78
|
+
specification_version: 4
|
79
|
+
summary: LogMagic explains your logs
|
80
|
+
test_files: []
|