log_sense 1.3.0 → 1.3.5

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: e566be6e4288d20605f8dd39aa5fb016534a20af366b4f7ad229af3610397771
4
- data.tar.gz: cb338c23a5e829876a2649896cacb00f4274f1be7c9a606a1dcd4c3d9f0431b1
3
+ metadata.gz: 30e8194103003ca9861272072bbf9ef199d7d80b67a0b73fb38d510f23adacee
4
+ data.tar.gz: 00b36829dd41b27e79cd6a41cacb412479631c0be9a9e2b79d585f81e0c7efa8
5
5
  SHA512:
6
- metadata.gz: 89ca1ce0379ed828b0a6ea7af79e35626f0b67693f4b3f2ae744df9b6714fff6f02f30c82f78d84fd76e0d947378a0f3fb11fd865cb015cb11964c02694e3e02
7
- data.tar.gz: ddf3d3a976979e03c9544a613051fab201146db40b6fb0da2e21b521012b6f19413df133d68ae10187baff0a8abef4c43e2a79322a58c851572faa94c792229c
6
+ metadata.gz: 41b392e7d5ec01052dbb645d50b6dc6736a82c04ea231ac33f3fa2c3679cc27a959164a8f5f9524f1604f1b495c032978a2e4e14ca01a706448fc6a8d7556185
7
+ data.tar.gz: fea27d4e0765fec9b090101a3efec3eb5ebd162af1c7389162d34c876754980b5dbccb22141b3aa4a0ec3eeb44bfd3936e17cc5463dc93148c3718bb51a1dcec
data/CHANGELOG.org CHANGED
@@ -2,13 +2,24 @@
2
2
  #+AUTHOR: Adolfo Villafiorita
3
3
  #+STARTUP: showall
4
4
 
5
- * Changes in log_sense 1.1.2
6
- <2021-12-17 Fri>
5
+ * 1.3.3 and 1.3.4
7
6
 
8
- - Added Rails Log HTML output
7
+ - [Gem] Moved repository to Github and fixes to gemspec
9
8
 
10
- * Changes in log_sense 1.1.1 and earlier
11
- <2021-12-17 Fri>
9
+ * 1.3.2
12
10
 
13
- - In the Git commit messages (not very informative, I am afraid).
11
+ - [Code] HTML reports now generate JSON data which is shared between
12
+ DataTable and Vega Light: this should reduce page size and loading
13
+ time of HTML reports
14
+ - [Doc] Added screenshot and fixed some text
15
+ - [Doc] Fixes requirements on Ruby version
14
16
 
17
+ * 1.3.1
18
+
19
+ - [Code] Strengthened parsing of Apache Logs (added WebDav and other methods)
20
+
21
+ * 1.3.0
22
+
23
+ - [Code] Removed dependency from =apache_log-parser= and implemented our own
24
+ parser for the combined format.
25
+
data/Gemfile.lock CHANGED
@@ -1,8 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- log_sense (1.0.7)
5
- apache_log-parser
4
+ log_sense (1.3.1)
6
5
  browser
7
6
  ipaddr
8
7
  iso_country_codes
@@ -12,7 +11,6 @@ PATH
12
11
  GEM
13
12
  remote: https://rubygems.org/
14
13
  specs:
15
- apache_log-parser (3.1.2)
16
14
  browser (5.3.1)
17
15
  byebug (11.1.3)
18
16
  ipaddr (1.2.3)
data/README.org CHANGED
@@ -4,24 +4,10 @@
4
4
 
5
5
  * Introduction
6
6
 
7
- LogSense generates reports and statistics from Apache web logs in the
8
- =combined= format and from Rails logs. Written in Ruby, it runs from
9
- the command line, it is fast, and it can be installed on any system
10
- which supports Ruby.
11
-
12
- LogSense moves along the lines of tools such as [[https://goaccess.io/][GoAccess]]
13
- and [[https://umami.is/][Umami]], focusing on privacy and data-ownership: the data
14
- generated by LogSense is stored on your computer and owned by
15
- you (like it should be).
16
-
17
- LogSense is also inspired by *static websites generators*: statistics
18
- are generated from the command line and accessed as static HTML files.
19
- By generating static resources, LogSense significantly reduces the
20
- attack surface of your webserver and installation headaches.
21
-
22
- We have, for instance, a cron job running on our servers, generating
23
- statistics at night. The generated files are then made available on a
24
- private area on the web.
7
+ LogSense generates reports and statistics from Apache and Ruby on
8
+ Rails logs. Written in Ruby, it runs from the command line, it is
9
+ fast, and it can be installed on any system with a relatively recent
10
+ version of Ruby. We tested on Ruby 2.6.9, Ruby 3.0.x and later.
25
11
 
26
12
  LogSense reports the following data:
27
13
 
@@ -40,7 +26,27 @@ LogSense reports the following data:
40
26
  Filters from the command line allow to analyze specific periods and
41
27
  distinguish traffic generated by self polls and crawlers.
42
28
 
43
- LogSense generates HTML, txt (Org Mode), and SQLite outputs.
29
+ LogSense generates HTML, txt, and SQLite outputs.
30
+
31
+ And, of course, the compulsory screenshot:
32
+
33
+ #+ATTR_HTML: :width 80%
34
+ [[file:./apache-screenshot.png]]
35
+
36
+ * Motivation
37
+
38
+ LogSense moves along the lines of tools such as [[https://goaccess.io/][GoAccess]] (which
39
+ strongly inspired the development of Log Sense) and [[https://umami.is/][Umami]], focusing on
40
+ *privacy* and *data-ownership*: the data generated by LogSense is
41
+ stored on your computer and owned by you (like it should be)[fn:1].
42
+
43
+ LogSense is also inspired by *static websites generators*: statistics
44
+ are generated from the command line and accessed as static HTML files.
45
+ LogSense thus significantly reduces the attack surface of your
46
+ web server and installation headaches. We have, for instance, a cron
47
+ job running on our servers, generating statistics at night. The
48
+ generated files are then made available on a private area on the web.
49
+
44
50
 
45
51
  * Installation
46
52
 
@@ -70,48 +76,60 @@ LogSense generates HTML, txt (Org Mode), and SQLite outputs.
70
76
  -v, --version Prints version information
71
77
  -h, --help Prints this help
72
78
 
73
- This is version 1.1.1
79
+ This is version 1.3.1
74
80
 
75
81
  Output formats
76
- apache parsing can produce the following outputs:
77
- - sqlite
78
- - html
79
82
  rails parsing can produce the following outputs:
80
83
  - sqlite
81
84
  - txt
85
+ - html
86
+ apache parsing can produce the following outputs:
87
+ - sqlite
88
+ - html
82
89
  #+end_example
83
90
 
91
+ Examples:
92
+
93
+ #+begin_example sh
94
+ log_sense -f apache -i access.log -t txt > access-data.txt
95
+ log_sense -f rails -i production.log -t html -o performance.txt
96
+ #+end_example
97
+
84
98
  * Change Log
85
99
 
86
100
  See the [[file:CHANGELOG.org][CHANGELOG]] file.
87
101
 
88
102
  * Compatibility
89
103
 
90
- LogSense should run on any system on which Ruby runs.
104
+ LogSense should run on any system on which a recent version of Ruby
105
+ runs. We tested it with Ruby 2.6.9 and Ruby 3.x.x.
91
106
 
92
107
  Concerning the outputs:
93
108
 
94
- - The HTML report uses [[https://picturepan2.github.io/spectre/][Spectre.css]] and (will use) [[https://vega.github.io/vega-lite/][Vega Light]], which
95
- are downloaded from a CDN
96
- - The textual format is compatible with Org Mode and can be further
97
- processed to any format Org Mode can be exported to (including HTML
98
- and PDF),
109
+ - HTML reports use [[https://get.foundation/][Zurb Foundation]], [[https://www.datatables.net/][Data Tables]], and [[https://vega.github.io/vega-lite/][Vega Light]], which
110
+ are all downloaded from a CDN
111
+ - The textual format is compatible with [[https://orgmode.org/][Org Mode]] and can be further
112
+ processed to any format [[https://orgmode.org/][Org Mode]] can be exported to (including HTML
113
+ and PDF)
99
114
 
100
115
  * Author and Contributors
101
116
 
102
- [[http://ict4g.net/adolfo][Adolfo Villafiorita]].
117
+ [[https://shair.tech][Shair.Tech]]
103
118
 
104
119
  * Known Bugs
105
120
 
106
- Some known bugs and an unknown number of unknown bugs.
107
-
121
+ No known bugs; an unknown number of unknown bugs.
108
122
  (See the open issues for the known bugs.)
109
123
 
110
124
  * License
111
125
 
112
126
  Distributed under the terms of the [[http://opensource.org/licenses/MIT][MIT License]].
113
127
 
114
- Geolocation is made possible by the DB-IP.com IP to City database, released under
115
- a CC license.
116
-
128
+ Geolocation is made possible by the DB-IP.com IP to City database,
129
+ released under a CC license.
117
130
 
131
+ [fn:1] There is a small catch: CSS and JavaScript for layout and plots
132
+ are downloaded from a CDN. Technically, thus, if you generate HTML
133
+ reports and open them, a request is performed and the CDN might keep a
134
+ track (see [[https://en.wikipedia.org/wiki/Content_delivery_network#Security_and_privacy][CDN Security and Privacy on Wikipedia]] for more details).
135
+ Textual reports don't have this issue.
Binary file
@@ -25,16 +25,19 @@ module LogSense
25
25
  TIMEC = /[0-9]{2}/
26
26
  TIMEZONE = /(\+|-)[0-9]{4}/
27
27
 
28
- IP = /(?<ip>[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})/
28
+ IP = /(?<ip>[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}|::1)/
29
29
  IDENT = /(?<ident>[^ ]+|-)/
30
30
  USERID = /(?<userid>[^ ]+|-)/
31
31
 
32
32
  TIMESTAMP = /(?<date>#{DAY}\/#{MONTH}\/#{YEAR}):(?<time>#{TIMEC}:#{TIMEC}:#{TIMEC} #{TIMEZONE})/
33
33
 
34
- VERB=/(?<method>GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)/
34
+ HTTP_METHODS=/GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH/
35
+ WEBDAV_METHODS=/COPY|LOCK|MKCOL|MOVE|PROPFIND|PROPPATCH|UNLOCK/
36
+ OTHER_METHODS=/SEARCH|REPORT/
37
+ METHOD=/(?<method>#{HTTP_METHODS}|#{WEBDAV_METHODS}|#{OTHER_METHODS})/
35
38
  PROTOCOL=/(?<protocol>HTTP\/[0-9]\.[0-9])/
36
39
  URL=/(?<url>[^ ]+)/
37
- REFERER=/(?<referer>[^ ])+/
40
+ REFERER=/(?<referer>[^ ]+)/
38
41
  RETURN_CODE=/(?<status>[1-5][0-9][0-9])/
39
42
  SIZE=/(?<size>[0-9]+|-)/
40
43
 
@@ -43,7 +46,7 @@ module LogSense
43
46
  attr_reader :format
44
47
 
45
48
  def initialize
46
- @format = /#{IP} #{IDENT} #{USERID} \[#{TIMESTAMP}\] "#{VERB} #{URL} #{PROTOCOL}" #{RETURN_CODE} #{SIZE} "#{REFERER}" "#{USER_AGENT}"/
49
+ @format = /#{IP} #{IDENT} #{USERID} \[#{TIMESTAMP}\] "#{METHOD} #{URL} #{PROTOCOL}" #{RETURN_CODE} #{SIZE} "#{REFERER}" "#{USER_AGENT}"/
47
50
  end
48
51
 
49
52
  def parse line
@@ -40,5 +40,12 @@ module LogSense
40
40
  ERB.new(erb_template).result(OpenStruct.new(vars).instance_eval { binding })
41
41
  end
42
42
 
43
+ def self.escape_javascript(string)
44
+ js_escape_map = { "\\" => "\\\\", "</" => '<\/', "\r\n" => '\n', "\n" => '\n', "\r" => '\n', '"' => '\\"', "'" => "\\'", "`" => "\\`", "$" => "\\$" }
45
+ js_escape_map.each do |k, v|
46
+ string = string.gsub(k, v)
47
+ end
48
+ string
49
+ end
43
50
  end
44
51
  end
@@ -4,22 +4,26 @@ def slugify string
4
4
  end
5
5
  %>
6
6
 
7
- <table id="<%= slugify(title || "") %>-table" class="table unstriped data-table <%= slugify(title || "") %>">
7
+ <table id="table-<%= index %>" class="table unstriped">
8
8
  <thead>
9
9
  <tr>
10
- <% header.each do |heading| %>
11
- <th class="<%= slugify(heading) %>"><%= heading %></th>
10
+ <% report[:header].each do |header| %>
11
+ <th><%= header %></th>
12
12
  <% end %>
13
13
  </tr>
14
14
  </thead>
15
15
  <tbody>
16
- <% rows.each do |row| %>
17
- <tr>
18
- <% row.each_with_index do |cell, i| %>
19
- <td class="<%= slugify (header[i] || "") %>"><%= cell %></td>
20
- <% end %>
21
- </tr>
22
- <% end %>
23
16
  </tbody>
24
17
  </table>
25
-
18
+ <script>
19
+ $(document).ready(function(){
20
+ $('#table-<%= index %>').dataTable({
21
+ data: data_<%= index %>,
22
+ columns: [
23
+ <% report[:header].each do |header| %>
24
+ { data: '<%= header %>', className: '<%= slugify(header) %>' },
25
+ <% end %>
26
+ ]
27
+ });
28
+ });
29
+ </script>
@@ -0,0 +1,12 @@
1
+ <script>
2
+ /* this is used both by Vega and DataTable */
3
+ data_<%= index %> = [
4
+ <% report[:rows].each do |row| %>
5
+ {
6
+ <% report[:header].each_with_index do |h, i| %>
7
+ "<%= h %>": <%= (row[i].class == Integer or row[i].class == Float) ? row[i] : "\"#{Emitter::escape_javascript(row[i] || '')}\"" %>,
8
+ <% end %>
9
+ },
10
+ <% end %>
11
+ ]
12
+ </script>
@@ -17,6 +17,8 @@
17
17
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.4/dist/css/foundation.min.css">
18
18
  <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/zf/dt-1.11.3/datatables.min.css"/>
19
19
 
20
+ <script type="text/javascript" src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
21
+ <script type="text/javascript" src="https://cdn.datatables.net/v/zf/dt-1.11.3/datatables.min.js"></script>
20
22
 
21
23
  <script src="https://cdn.jsdelivr.net/npm/vega@5.21.0"></script>
22
24
  <script src="https://cdn.jsdelivr.net/npm/vega-lite@5.2.0"></script>
@@ -426,7 +428,7 @@
426
428
  <%= report[:title] %>
427
429
  </h2>
428
430
  </div>
429
-
431
+ <%= render "report_data.html.erb", report: report, index: index %>
430
432
  <% if report[:vega_spec] %>
431
433
  <div id="<%= "plot-#{index}" %>"></div>
432
434
  <script>
@@ -436,22 +438,15 @@
436
438
  width: "container",
437
439
  description: "<%= report[:title] %>",
438
440
  data: {
439
- values: [
440
- <% report[:rows].each do |row| %>
441
- {
442
- <% report[:header].each_with_index do |h, i| %>
443
- "<%= h %>": <%= (row[i].class == Integer or row[i].class == Float) ? row[i] : "\"#{row[i]}\"" %>,
444
- <% end %>
445
- },
446
- <% end %>
447
- ]
441
+ values: data_<%= index %>
448
442
  },
449
443
  });
450
444
  vegaEmbed('#<%= "plot-#{index}"%>', plot_spec_<%= index %>);
451
445
  </script>
452
446
  <% end %>
453
- <div class="card-section">
454
- <%= render "output_table.html.erb", report %>
447
+
448
+ <div class="card-section">
449
+ <%= render "output_table.html.erb", report: report, index: index %>
455
450
  </div>
456
451
  </article>
457
452
  <% end %>
@@ -569,9 +564,7 @@
569
564
  </section>
570
565
  </div>
571
566
 
572
- <script type="text/javascript" src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
573
567
  <script type="text/javascript" src="js/vendor/what-input.js"></script>
574
- <script type="text/javascript" src="https://cdn.datatables.net/v/zf/dt-1.11.3/datatables.min.js"></script>
575
568
  <script src="https://cdn.jsdelivr.net/npm/vega@5"></script>
576
569
  <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.4/dist/js/foundation.min.js" crossorigin="anonymous"></script>
577
570
  <script>
@@ -17,6 +17,8 @@
17
17
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.4/dist/css/foundation.min.css">
18
18
  <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/zf/dt-1.11.3/datatables.min.css"/>
19
19
 
20
+ <script type="text/javascript" src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
21
+ <script type="text/javascript" src="https://cdn.datatables.net/v/zf/dt-1.11.3/datatables.min.js"></script>
20
22
 
21
23
  <script src="https://cdn.jsdelivr.net/npm/vega@5.21.0"></script>
22
24
  <script src="https://cdn.jsdelivr.net/npm/vega-lite@5.2.0"></script>
@@ -306,7 +308,24 @@
306
308
  vega_spec: {
307
309
  "layer": [
308
310
  {
309
- "mark": "point"
311
+ "mark": {
312
+ "type": "point",
313
+ "name": "data_points"
314
+ }
315
+ },
316
+ {
317
+ "mark": {
318
+ "name": "label",
319
+ "type": "text",
320
+ "align": "left",
321
+ "baseline": "middle",
322
+ "dx": 5,
323
+ "yOffset": 0
324
+ },
325
+ "encoding": {
326
+ "text": {"field": "Controller"},
327
+ "fontSize": {"value": 8}
328
+ },
310
329
  },
311
330
  ],
312
331
  "encoding": {
@@ -341,7 +360,7 @@
341
360
  <%= report[:title] %>
342
361
  </h2>
343
362
  </div>
344
-
363
+ <%= render "report_data.html.erb", report: report, index: index %>
345
364
  <% if report[:vega_spec] %>
346
365
  <div id="<%= "plot-#{index}" %>"></div>
347
366
  <script>
@@ -351,22 +370,14 @@
351
370
  width: "container",
352
371
  description: "<%= report[:title] %>",
353
372
  data: {
354
- values: [
355
- <% report[:rows].each do |row| %>
356
- {
357
- <% report[:header].each_with_index do |h, i| %>
358
- "<%= h %>": <%= (row[i].class == Integer or row[i].class == Float) ? row[i] : "\"#{row[i]}\"" %>,
359
- <% end %>
360
- },
361
- <% end %>
362
- ]
373
+ values: data_<%= index %>
363
374
  },
364
375
  });
365
376
  vegaEmbed('#<%= "plot-#{index}"%>', plot_spec_<%= index %>);
366
377
  </script>
367
378
  <% end %>
368
379
  <div class="card-section">
369
- <%= render "output_table.html.erb", report %>
380
+ <%= render "output_table.html.erb", report: report, index: index %>
370
381
  </div>
371
382
  </article>
372
383
  <% end %>
@@ -392,9 +403,7 @@
392
403
  </section>
393
404
  </div>
394
405
 
395
- <script type="text/javascript" src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
396
406
  <script type="text/javascript" src="js/vendor/what-input.js"></script>
397
- <script type="text/javascript" src="https://cdn.datatables.net/v/zf/dt-1.11.3/datatables.min.js"></script>
398
407
  <script src="https://cdn.jsdelivr.net/npm/vega@5"></script>
399
408
  <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.4/dist/js/foundation.min.js" crossorigin="anonymous"></script>
400
409
  <script>
@@ -1,3 +1,3 @@
1
1
  module LogSense
2
- VERSION = "1.3.0"
2
+ VERSION = "1.3.5"
3
3
  end
data/log_sense.gemspec CHANGED
@@ -1,38 +1,38 @@
1
1
  require_relative 'lib/log_sense/version'
2
2
 
3
3
  Gem::Specification.new do |spec|
4
- spec.name = "log_sense"
4
+ spec.name = 'log_sense'
5
5
  spec.version = LogSense::VERSION
6
- spec.authors = ["Adolfo Villafiorita"]
7
- spec.email = ["adolfo.villafiorita@ict4g.net"]
6
+ spec.authors = ['Adolfo Fibrillation']
7
+ spec.email = ['adolfo@shair.tech']
8
8
 
9
- spec.summary = %q{Generate analytics from an Apache and Rails log file.}
10
- spec.description = %q{Generate analystics in HTML, txt, and SQLite format from an Apache and Rails log files.}
11
- spec.homepage = "https://www.ict4g.net/gitea/adolfo/log_sense"
12
- spec.license = "MIT"
13
- spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
9
+ spec.summary = %q{Generate analytics for Apache and Rails log file.}
10
+ spec.description = %q{Generate analytics in HTML, txt, and SQLite format for Apache and Rails log files.}
11
+ spec.homepage = 'https://github.com/shair-tech/log_sense/log_sense'
12
+ spec.license = 'MIT'
13
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.6.9')
14
14
 
15
- spec.metadata["allowed_push_host"] = "https://rubygems.org/"
15
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org/'
16
16
 
17
- spec.metadata["homepage_uri"] = spec.homepage
18
- spec.metadata["source_code_uri"] = "https://www.ict4g.net/gitea/adolfo/log_sense"
19
- spec.metadata["changelog_uri"] = "https://www.ict4g.net/gitea/adolfo/log_sense/CHANGELOG.org"
17
+ spec.metadata['homepage_uri'] = spec.homepage
18
+ spec.metadata['source_code_uri'] = 'https://github.com/shair-tech/log_sense/log_sense'
19
+ spec.metadata['changelog_uri'] = 'https://github.com/shair-tech/log_sense/blob/main/CHANGELOG.org'
20
20
 
21
21
  # Specify which files should be added to the gem when it is released.
22
22
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
23
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
24
24
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
25
  end
26
- spec.bindir = "exe"
26
+ spec.bindir = 'exe'
27
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
- spec.require_paths = ["lib"]
28
+ spec.require_paths = ['lib']
29
29
 
30
- spec.add_dependency "browser"
31
- spec.add_dependency "ipaddr"
32
- spec.add_dependency "iso_country_codes"
33
- spec.add_dependency "sqlite3"
34
- spec.add_dependency "terminal-table"
30
+ spec.add_dependency 'browser'
31
+ spec.add_dependency 'ipaddr'
32
+ spec.add_dependency 'iso_country_codes'
33
+ spec.add_dependency 'sqlite3'
34
+ spec.add_dependency 'terminal-table'
35
35
 
36
36
  spec.add_development_dependency 'byebug'
37
- spec.add_development_dependency "minitest"
37
+ spec.add_development_dependency 'minitest'
38
38
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: log_sense
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.5
5
5
  platform: ruby
6
6
  authors:
7
- - Adolfo Villafiorita
7
+ - Adolfo Fibrillation
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-12-24 00:00:00.000000000 Z
11
+ date: 2022-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: browser
@@ -108,10 +108,10 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
- description: Generate analystics in HTML, txt, and SQLite format from an Apache and
112
- Rails log files.
111
+ description: Generate analytics in HTML, txt, and SQLite format for Apache and Rails
112
+ log files.
113
113
  email:
114
- - adolfo.villafiorita@ict4g.net
114
+ - adolfo@shair.tech
115
115
  executables:
116
116
  - log_sense
117
117
  extensions: []
@@ -124,6 +124,7 @@ files:
124
124
  - LICENSE.txt
125
125
  - README.org
126
126
  - Rakefile
127
+ - apache-screenshot.png
127
128
  - bin/console
128
129
  - bin/setup
129
130
  - exe/log_sense
@@ -143,6 +144,7 @@ files:
143
144
  - lib/log_sense/templates/_output_table.html.erb
144
145
  - lib/log_sense/templates/_performance.html.erb
145
146
  - lib/log_sense/templates/_performance.txt.erb
147
+ - lib/log_sense/templates/_report_data.html.erb
146
148
  - lib/log_sense/templates/_summary.html.erb
147
149
  - lib/log_sense/templates/_summary.txt.erb
148
150
  - lib/log_sense/templates/apache.html.erb
@@ -153,14 +155,14 @@ files:
153
155
  - sample_logs/empty_log.log
154
156
  - sample_logs/safety-critical_org.log
155
157
  - sample_logs/spmbook_com.log
156
- homepage: https://www.ict4g.net/gitea/adolfo/log_sense
158
+ homepage: https://github.com/shair-tech/log_sense/log_sense
157
159
  licenses:
158
160
  - MIT
159
161
  metadata:
160
162
  allowed_push_host: https://rubygems.org/
161
- homepage_uri: https://www.ict4g.net/gitea/adolfo/log_sense
162
- source_code_uri: https://www.ict4g.net/gitea/adolfo/log_sense
163
- changelog_uri: https://www.ict4g.net/gitea/adolfo/log_sense/CHANGELOG.org
163
+ homepage_uri: https://github.com/shair-tech/log_sense/log_sense
164
+ source_code_uri: https://github.com/shair-tech/log_sense/log_sense
165
+ changelog_uri: https://github.com/shair-tech/log_sense/blob/main/CHANGELOG.org
164
166
  post_install_message:
165
167
  rdoc_options: []
166
168
  require_paths:
@@ -169,15 +171,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
169
171
  requirements:
170
172
  - - ">="
171
173
  - !ruby/object:Gem::Version
172
- version: 2.3.0
174
+ version: 2.6.9
173
175
  required_rubygems_version: !ruby/object:Gem::Requirement
174
176
  requirements:
175
177
  - - ">="
176
178
  - !ruby/object:Gem::Version
177
179
  version: '0'
178
180
  requirements: []
179
- rubygems_version: 3.2.32
181
+ rubygems_version: 3.0.3.1
180
182
  signing_key:
181
183
  specification_version: 4
182
- summary: Generate analytics from an Apache and Rails log file.
184
+ summary: Generate analytics for Apache and Rails log file.
183
185
  test_files: []