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 +4 -4
 - data/CHANGELOG.org +17 -6
 - data/Gemfile.lock +1 -3
 - data/README.org +53 -35
 - data/apache-screenshot.png +0 -0
 - data/lib/log_sense/apache_log_line_parser.rb +7 -4
 - data/lib/log_sense/emitter.rb +7 -0
 - data/lib/log_sense/templates/_output_table.html.erb +15 -11
 - data/lib/log_sense/templates/_report_data.html.erb +12 -0
 - data/lib/log_sense/templates/apache.html.erb +7 -14
 - data/lib/log_sense/templates/rails.html.erb +23 -14
 - data/lib/log_sense/version.rb +1 -1
 - data/log_sense.gemspec +20 -20
 - metadata +15 -13
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 30e8194103003ca9861272072bbf9ef199d7d80b67a0b73fb38d510f23adacee
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 00b36829dd41b27e79cd6a41cacb412479631c0be9a9e2b79d585f81e0c7efa8
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 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 
     | 
    
         
            -
            *  
     | 
| 
       6 
     | 
    
         
            -
              <2021-12-17 Fri>
         
     | 
| 
      
 5 
     | 
    
         
            +
            * 1.3.3 and 1.3.4
         
     | 
| 
       7 
6 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
            -  
     | 
| 
      
 7 
     | 
    
         
            +
            - [Gem] Moved repository to Github and fixes to gemspec
         
     | 
| 
       9 
8 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
            *  
     | 
| 
       11 
     | 
    
         
            -
              <2021-12-17 Fri>
         
     | 
| 
      
 9 
     | 
    
         
            +
            * 1.3.2
         
     | 
| 
       12 
10 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
            -  
     | 
| 
      
 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. 
     | 
| 
       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  
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       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 
     | 
| 
      
 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. 
     | 
| 
      
 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 
     | 
| 
      
 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 
     | 
    
         
            -
            -  
     | 
| 
       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 
     | 
    
         
            -
            [[ 
     | 
| 
      
 117 
     | 
    
         
            +
            [[https://shair.tech][Shair.Tech]]
         
     | 
| 
       103 
118 
     | 
    
         | 
| 
       104 
119 
     | 
    
         
             
            * Known Bugs
         
     | 
| 
       105 
120 
     | 
    
         | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
       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, 
     | 
| 
       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 
     | 
    
         
            -
                 
     | 
| 
      
 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}\] "#{ 
     | 
| 
      
 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
         
     | 
    
        data/lib/log_sense/emitter.rb
    CHANGED
    
    | 
         @@ -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=" 
     | 
| 
      
 7 
     | 
    
         
            +
            <table id="table-<%= index %>" class="table unstriped">
         
     | 
| 
       8 
8 
     | 
    
         
             
              <thead>
         
     | 
| 
       9 
9 
     | 
    
         
             
                <tr>
         
     | 
| 
       10 
     | 
    
         
            -
                  <% header.each do | 
     | 
| 
       11 
     | 
    
         
            -
                    <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 
     | 
    
         
            -
             
     | 
| 
       454 
     | 
    
         
            -
             
     | 
| 
      
 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":  
     | 
| 
      
 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>
         
     | 
    
        data/lib/log_sense/version.rb
    CHANGED
    
    
    
        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          =  
     | 
| 
      
 4 
     | 
    
         
            +
              spec.name          = 'log_sense'
         
     | 
| 
       5 
5 
     | 
    
         
             
              spec.version       = LogSense::VERSION
         
     | 
| 
       6 
     | 
    
         
            -
              spec.authors       = [ 
     | 
| 
       7 
     | 
    
         
            -
              spec.email         = [ 
     | 
| 
      
 6 
     | 
    
         
            +
              spec.authors       = ['Adolfo Fibrillation']
         
     | 
| 
      
 7 
     | 
    
         
            +
              spec.email         = ['adolfo@shair.tech']
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
              spec.summary       = %q{Generate analytics  
     | 
| 
       10 
     | 
    
         
            -
              spec.description   = %q{Generate  
     | 
| 
       11 
     | 
    
         
            -
              spec.homepage      =  
     | 
| 
       12 
     | 
    
         
            -
              spec.license       =  
     | 
| 
       13 
     | 
    
         
            -
              spec.required_ruby_version = Gem::Requirement.new( 
     | 
| 
      
 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[ 
     | 
| 
      
 15 
     | 
    
         
            +
              spec.metadata['allowed_push_host'] = 'https://rubygems.org/'
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
              spec.metadata[ 
     | 
| 
       18 
     | 
    
         
            -
              spec.metadata[ 
     | 
| 
       19 
     | 
    
         
            -
              spec.metadata[ 
     | 
| 
      
 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        =  
     | 
| 
      
 26 
     | 
    
         
            +
              spec.bindir        = 'exe'
         
     | 
| 
       27 
27 
     | 
    
         
             
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         
     | 
| 
       28 
     | 
    
         
            -
              spec.require_paths = [ 
     | 
| 
      
 28 
     | 
    
         
            +
              spec.require_paths = ['lib']
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
              spec.add_dependency  
     | 
| 
       31 
     | 
    
         
            -
              spec.add_dependency  
     | 
| 
       32 
     | 
    
         
            -
              spec.add_dependency  
     | 
| 
       33 
     | 
    
         
            -
              spec.add_dependency  
     | 
| 
       34 
     | 
    
         
            -
              spec.add_dependency  
     | 
| 
      
 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  
     | 
| 
      
 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. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.3.5
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
     | 
    
         
            -
            - Adolfo  
     | 
| 
      
 7 
     | 
    
         
            +
            - Adolfo Fibrillation
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 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  
     | 
| 
       112 
     | 
    
         
            -
               
     | 
| 
      
 111 
     | 
    
         
            +
            description: Generate analytics in HTML, txt, and SQLite format for Apache and Rails
         
     | 
| 
      
 112 
     | 
    
         
            +
              log files.
         
     | 
| 
       113 
113 
     | 
    
         
             
            email:
         
     | 
| 
       114 
     | 
    
         
            -
            - adolfo 
     | 
| 
      
 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:// 
     | 
| 
      
 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:// 
     | 
| 
       162 
     | 
    
         
            -
              source_code_uri: https:// 
     | 
| 
       163 
     | 
    
         
            -
              changelog_uri: https:// 
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
      
 181 
     | 
    
         
            +
            rubygems_version: 3.0.3.1
         
     | 
| 
       180 
182 
     | 
    
         
             
            signing_key:
         
     | 
| 
       181 
183 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       182 
     | 
    
         
            -
            summary: Generate analytics  
     | 
| 
      
 184 
     | 
    
         
            +
            summary: Generate analytics for Apache and Rails log file.
         
     | 
| 
       183 
185 
     | 
    
         
             
            test_files: []
         
     |