log_sense 1.3.0 → 1.3.5

Sign up to get free protection for your applications and to get access to all the features.
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: []