clogger 2.2.1 → 2.4.0

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: 97fb2f9fb82bfc33a07ee55de5b946830c6562dc9fc9d11f5c75d89323f3543e
4
- data.tar.gz: 96062fd19c193f6b9a5418ebf237b2425966f56f23133ad389c19bf1de1ebcd1
3
+ metadata.gz: f07e1211c59e3f7ab5272febd94b6f19cc384d9add4043a2fc1815a3d3579518
4
+ data.tar.gz: bf4af6f34c84c24542831150a159fc4f89f5bbccf39f8b35f81cf0b2fcb1658d
5
5
  SHA512:
6
- metadata.gz: '019753504c2aa28353ed40da5b4612ed9c6e8f94daa91fcfdc7090a7486d45a18448ae03cd75519f79a557b8e7dd576f0939f6e62ef1a65d928c5e9844aed503'
7
- data.tar.gz: b4c50eafffa057ccfae3dc9473a19f33a7f1efddf534dd73623002e2d4545daae19a4ea2e1156b539a5d32df56afac3eda351524eb49007a46ae50b936981a1b
6
+ metadata.gz: 47a615c6cb5ad51d3b391dbd2fccfe8c0413d8301cef29789394d06be886a66343ef448e8f6746a651fe17118e807530242fca6cc67b3dac1e41f9a8f03b37be
7
+ data.tar.gz: 7167c4bd8881f5452e15852e6c51f8e898bdf548d967c322957c31cdf127f9e7fbf8e8ec31f7439b1be398faf629a1ae7d7513a82299717f7a144c05c6f5a607
data/.olddoc.yml CHANGED
@@ -1,13 +1,15 @@
1
1
  ---
2
- rdoc_url: https://yhbt.net/clogger/
3
- cgit_url: https://yhbt.net/clogger.git
4
- git_url: git://yhbt.net/clogger.git
5
- public_email: clogger-public@yhbt.net
2
+ rdoc_url: https://YHBT.net/clogger/
3
+ cgit_url: https://YHBT.net/clogger.git
4
+ git_url: https://YHBT.net/clogger.git
5
+ public_email: clogger-public@YHBT.net
6
6
  ml_url:
7
- - https://yhbt.net/clogger-public/
8
- - http://ou63pmih66umazou.onion/clogger-public/
9
- - nntp://news.public-inbox.org/inbox.comp.lang.ruby.clogger
7
+ - https://YHBT.net/clogger-public/
8
+ - http://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/clogger-public/
9
+ - imaps://YHBT.net/inbox.comp.lang.ruby.clogger.0
10
+ - imap://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/inbox.comp.lang.ruby.clogger.0
11
+ - nntps://news.public-inbox.org/inbox.comp.lang.ruby.clogger
12
+ - nntp://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/inbox.comp.lang.ruby.clogger
10
13
  source_code:
11
- - git clone git://yhbt.net/clogger.git
12
- - git clone https://yhbt.net/clogger.git
13
- - torsocks git clone http://ou63pmih66umazou.onion/clogger.git
14
+ - git clone https://YHBT.net/clogger.git
15
+ - torsocks git clone http://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/clogger.git
data/GIT-VERSION-FILE CHANGED
@@ -1 +1 @@
1
- GIT_VERSION = 2.2.1
1
+ GIT_VERSION = 2.4.0
data/GIT-VERSION-GEN CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/bin/sh
2
2
 
3
3
  GVF=GIT-VERSION-FILE
4
- DEF_VER=v2.2.1
4
+ DEF_VER=v2.4.0
5
5
 
6
6
  LF='
7
7
  '
data/GNUmakefile CHANGED
@@ -1,5 +1,5 @@
1
1
  all::
2
- RSYNC_DEST := yhbt.net:/srv/yhbt/clogger/
2
+ RSYNC_DEST := YHBT.net:/srv/yhbt/clogger/
3
3
  rfpackage := clogger
4
4
  include pkg.mk
5
5
  test-ext:
data/LATEST CHANGED
@@ -1,9 +1,9 @@
1
- === clogger 2.2.1 - move away from .org TLD / 2020-01-08 09:46 UTC
1
+ === clogger 2.4.0 / 2022-06-16 16:53 UTC
2
2
 
3
- Just doc and website updates to point our email address
4
- and website to yhbt.net because bogomips.org won't be
5
- affordable due to extortionists, soon.
3
+ Only 2 code changes, neither of which is really relevant for 99% of
4
+ users using the C extension and strict HTTP parsers.
6
5
 
7
- doc: switch to dark216 for website
8
- doc: replace bogomips.org with yhbt.net
6
+ escape env['REQUEST_METHOD'] for non-strict HTTP servers
7
+ pure: fix time.rb incompatibility in Ruby 3.1+
8
+ doc: drop git:// URLs, use shorter domain for IMAP links
9
9
 
data/NEWS CHANGED
@@ -1,3 +1,36 @@
1
+ === clogger 2.4.0 / 2022-06-16 16:53 UTC
2
+
3
+ Only 2 code changes, neither of which is really relevant for 99% of
4
+ users using the C extension and strict HTTP parsers.
5
+
6
+ escape env['REQUEST_METHOD'] for non-strict HTTP servers
7
+ pure: fix time.rb incompatibility in Ruby 3.1+
8
+ doc: drop git:// URLs, use shorter domain for IMAP links
9
+
10
+ === clogger 2.3.1 / 2021-05-25 23:39 UTC
11
+
12
+ This release fixes compatibility with GC.compact on Ruby 3.x.
13
+ Thanks to Ngan Pham for the patch and Aaron Patterson for the
14
+ feedback for the (obsolete) kgio RubyGem:
15
+
16
+ https://yhbt.net/kgio-public/CAAvYYt5Z5f2rMuXO5DMpR1-6uRvu_gXKDvqcyoZ+oNcLiTH39g@mail.gmail.com/T/
17
+
18
+ === clogger 2.3.0 - $request_time{POWER,PRECISION} support / 2020-08-10 23:01 UTC
19
+
20
+ The $request_time can now be multiplied by a power-of-10,
21
+ allowing up to nanosecond resolution without decimals.
22
+
23
+ Thanks to Josh Natanson for contributing this feature:
24
+
25
+ https://yhbt.net/clogger-public/CAPdx2swO4eaOWaqL4-rMLq1H7pH6w-i760vPJTb92tyKfcc01Q@mail.gmail.com/
26
+ https://yhbt.net/clogger-public/CAPdx2szjqUuFjUtrgoeXXwmz0HzfdnWe+2h2Sp_ywDkTDVL0-g@mail.gmail.com/T/
27
+
28
+ There's also some minor fixes and doc updates:
29
+
30
+ clogger: fix _BSD_SOURCE and _SVID_SOURCE deprecation warnings
31
+ doc: update with IMAPS, NNTPS, and .onion mail archive URLs
32
+ doc: document Fiber.current
33
+
1
34
  === clogger 2.2.1 - move away from .org TLD / 2020-01-08 09:46 UTC
2
35
 
3
36
  Just doc and website updates to point our email address
data/README CHANGED
@@ -69,10 +69,12 @@ that receives a "<<" method:
69
69
  * $request_uri - the URI requested ($path_info?$query_string)
70
70
  * $request - the first line of the HTTP request
71
71
  ($request_method $request_uri $http_version)
72
- * $request_time, $request_time{PRECISION} - time taken for request
73
- (including response body iteration). PRECISION defaults to 3
74
- (milliseconds) if not specified but may be specified anywhere from
75
- 0(seconds) to 6(microseconds).
72
+ * $request_time, $request_time{PRECISION}, $request_time{POWER,PRECISION} -
73
+ time taken for request (including response body iteration). PRECISION
74
+ defaults to 3 (milliseconds) if not specified but may be specified
75
+ anywhere from 0(seconds) to 6(microseconds). POWER will raise the time to
76
+ the provided power of 10, useful for converting to micro- or nanoseconds.
77
+ POWER defaults to 0 if not specified but may be specified any from 0 to 9
76
78
  * $time_iso8601 - current local time in ISO 8601 format,
77
79
  e.g. "1970-01-01T00:00:00+00:00"
78
80
  * $time_local - current local time in Apache log format,
@@ -87,7 +89,7 @@ that receives a "<<" method:
87
89
  * $ip - X-Forwarded-For request header if available, $remote_addr if not
88
90
  * $pid - process ID of the current process
89
91
  * $e{Thread.current} - Thread processing the request
90
- * $e{Actor.current} - Actor processing the request (Revactor or Rubinius)
92
+ * $e{Fiber.current} - Fiber processing the request
91
93
  * $env{variable_name} - any Rack environment variable (e.g. rack.url_scheme)
92
94
 
93
95
  == REQUIREMENTS
@@ -98,28 +100,40 @@ that receives a "<<" method:
98
100
 
99
101
  The latest development happens in git and is published to the following:
100
102
 
101
- git clone https://yhbt.net/clogger.git
102
- git clone git://repo.or.cz/clogger.git
103
+ git clone https://YHBT.net/clogger.git
104
+ git clone https://repo.or.cz/clogger.git
103
105
 
104
106
  You may also browse and download snapshot tarballs:
105
107
 
106
- * https://yhbt.net/clogger.git
107
- * http://repo.or.cz/w/clogger.git (gitweb)
108
+ * https://YHBT.net/clogger.git
109
+ * https://repo.or.cz/w/clogger.git (gitweb)
108
110
 
109
- The mailing list (see below) is central for coordination and
110
- development. Patches should always be sent inline
111
- (git format-patch -M + git send-email) so we can reply to them inline.
111
+ We use email for coordination and development, see below:
112
112
 
113
113
  == CONTACT
114
114
 
115
115
  All feedback (bug reports, user/development discussion, patches, pull
116
- requests) go to the public mailing list.
116
+ requests) is done via publicly-archived email:
117
117
 
118
- * mailto:clogger-public@yhbt.net
118
+ * https://YHBT.net/clogger-public/
119
+ * imaps://YHBT.net/inbox.comp.lang.ruby.clogger.0
120
+ * nntps://news.public-inbox.org/inbox.comp.lang.ruby.clogger
119
121
 
120
- Do not send HTML mail or attachments. Do not top post.
122
+ Tor users may also access HTTP, IMAP, and NNTP archives via .onion:
121
123
 
122
- Homepage: https://yhbt.net/clogger/
124
+ * http://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/clogger-public/
125
+ * imap://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/inbox.comp.lang.ruby.clogger.0
126
+ * nntp://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/inbox.comp.lang.ruby.clogger
127
+
128
+ AUTH=ANONYMOUS is supported for IMAP and IMAPS, and any
129
+ username + password will work.
130
+
131
+ No subscription or real names will ever be required to email us.
132
+ Do not send HTML email, do not top post.
133
+
134
+ * mailto:clogger-public@YHBT.net
135
+
136
+ Homepage: https://YHBT.net/clogger/
123
137
 
124
138
  == INSTALL
125
139
 
data/clogger.gemspec CHANGED
@@ -3,12 +3,12 @@ manifest = File.exist?('.manifest') ?
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = %q{clogger}
6
- s.version = (ENV['VERSION'] || '2.1.0').dup
7
- s.homepage = 'https://yhbt.net/clogger/'
6
+ s.version = (ENV['VERSION'] || '2.4.0').dup
7
+ s.homepage = 'https://YHBT.net/clogger/'
8
8
  s.authors = ["cloggers"]
9
9
  s.summary = 'configurable request logging for Rack'
10
10
  s.description = File.read('README').split("\n\n")[1]
11
- s.email = %q{clogger-public@yhbt.net}
11
+ s.email = %q{clogger-public@YHBT.net}
12
12
  s.extra_rdoc_files = IO.readlines('.document').map!(&:chomp!).keep_if do |f|
13
13
  File.exist?(f)
14
14
  end
@@ -1,3 +1,6 @@
1
+ /* quiet deprecation for _BSD_SOURCE and _SVID_SOURCE: */
2
+ #define _DEFAULT_SOURCE 1
3
+
1
4
  #include <ruby.h>
2
5
  #ifdef HAVE_RUBY_IO_H
3
6
  # include <ruby/io.h>
@@ -374,12 +377,40 @@ static void append_ts(struct clogger *c, VALUE op, struct timespec *ts)
374
377
  rb_str_buf_cat(c->log_buf, buf, nr);
375
378
  }
376
379
 
380
+ #define NANO_PER_SEC (1000 * 1000 * 1000)
377
381
  static void append_request_time_fmt(struct clogger *c, VALUE op)
378
382
  {
379
383
  struct timespec now;
384
+ unsigned long ipow = NUM2ULONG(rb_ary_entry(op, 3));
380
385
 
381
386
  clock_gettime(hopefully_CLOCK_MONOTONIC, &now);
382
387
  clock_diff(&now, &c->ts_start);
388
+ if (ipow) {
389
+ struct timespec prev;
390
+ unsigned long adj = 1;
391
+ /*
392
+ * n.b. timespec.tv_sec may not be time_t on some platforms,
393
+ * so we use a full timespec struct instead of time_t:
394
+ */
395
+ prev.tv_sec = now.tv_sec;
396
+ do { adj *= 10; } while (--ipow);
397
+ now.tv_sec *= adj;
398
+ now.tv_nsec *= adj;
399
+ if (now.tv_nsec >= NANO_PER_SEC) {
400
+ int64_t add = now.tv_nsec / NANO_PER_SEC;
401
+ now.tv_sec += add;
402
+ now.tv_nsec %= NANO_PER_SEC;
403
+ }
404
+ if (now.tv_sec < prev.tv_sec) { /* overflowed */
405
+ now.tv_nsec = NANO_PER_SEC - 1;
406
+ /*
407
+ * some platforms may use unsigned .tv_sec, but
408
+ * they're not worth supporting, so keep unsigned:
409
+ */
410
+ now.tv_sec = (time_t)(sizeof(now.tv_sec) == 4 ?
411
+ INT_MAX : LONG_MAX);
412
+ }
413
+ }
383
414
  append_ts(c, op, &now);
384
415
  }
385
416
 
@@ -416,10 +447,11 @@ static void append_request(struct clogger *c)
416
447
  {
417
448
  VALUE tmp;
418
449
 
419
- /* REQUEST_METHOD doesn't need escaping, Rack::Lint governs it */
420
450
  tmp = rb_hash_aref(c->env, g_REQUEST_METHOD);
421
- if (!NIL_P(tmp))
451
+ if (!NIL_P(tmp)) {
452
+ tmp = byte_xs(tmp);
422
453
  rb_str_buf_append(c->log_buf, tmp);
454
+ }
423
455
 
424
456
  rb_str_buf_append(c->log_buf, g_space);
425
457
 
@@ -1073,6 +1105,7 @@ void Init_clogger_ext(void)
1073
1105
  tmp = rb_const_get(rb_cObject, rb_intern("Rack"));
1074
1106
  tmp = rb_const_get(tmp, rb_intern("Utils"));
1075
1107
  cHeaderHash = rb_const_get(tmp, rb_intern("HeaderHash"));
1108
+ rb_ary_push(mark_ary, cHeaderHash);
1076
1109
 
1077
1110
  rb_obj_freeze(mark_ary);
1078
1111
  }
data/lib/clogger/pure.rb CHANGED
@@ -118,8 +118,7 @@ private
118
118
  version = env['HTTP_VERSION'] and version = " #{byte_xs(version)}"
119
119
  qs = env['QUERY_STRING']
120
120
  qs.empty? or qs = "?#{byte_xs(qs)}"
121
- "#{env['REQUEST_METHOD']} " \
122
- "#{request_uri(env)}#{version}"
121
+ "#{byte_xs(env['REQUEST_METHOD'] || '')} #{request_uri(env)}#{version}"
123
122
  when :request_uri
124
123
  request_uri(env)
125
124
  when :request_length
@@ -134,17 +133,10 @@ private
134
133
  when :time_iso8601
135
134
  Time.now.iso8601
136
135
  when :time_local
137
- t = Time.now
138
- off = t.utc_offset
139
- sign = off < 0 ? '-' : '+'
140
- sprintf("%02d/%s/%d:%02d:%02d:%02d #{sign}%02d%02d",
141
- t.mday, Time::RFC2822_MONTH_NAME[t.mon - 1],
142
- t.year, t.hour, t.min, t.sec, *(off.abs / 60).divmod(60))
136
+ # %b in Ruby is locale-independent, unlike strftime(3) in C
137
+ Time.now.strftime('%d/%b/%Y:%H:%M:%S %z')
143
138
  when :time_utc
144
- t = Time.now.utc
145
- sprintf("%02d/%s/%d:%02d:%02d:%02d +0000",
146
- t.mday, Time::RFC2822_MONTH_NAME[t.mon - 1],
147
- t.year, t.hour, t.min, t.sec)
139
+ Time.now.utc.strftime('%d/%b/%Y:%H:%M:%S %z')
148
140
  else
149
141
  raise "EDOOFUS #{special_nr}"
150
142
  end
@@ -166,6 +158,7 @@ private
166
158
  when OP_TIME_UTC; Time.now.utc.strftime(op[1])
167
159
  when OP_REQUEST_TIME
168
160
  t = mono_now - start
161
+ t = t * (10 ** op[3])
169
162
  time_format(t.to_i, (t - t.to_i) * 1000000, op[1], op[2])
170
163
  when OP_TIME
171
164
  t = Time.now
data/lib/clogger.rb CHANGED
@@ -51,7 +51,7 @@ private
51
51
 
52
52
  SCAN = /([^$]*)(\$+(?:env\{\w+(?:\.[\w\.]+)?\}|
53
53
  e\{[^\}]+\}|
54
- (?:request_)?time\{\d+\}|
54
+ (?:request_)?time\{\d+(?:,\d+)?\}|
55
55
  time_(?:utc|local)\{[^\}]+\}|
56
56
  \w*))?([^$]*)/x
57
57
 
@@ -92,7 +92,14 @@ private
92
92
  when /\A\$time\{(\d+)\}\z/
93
93
  rv << [ OP_TIME, *usec_conv_pair(tok, $1.to_i) ]
94
94
  when /\A\$request_time\{(\d+)\}\z/
95
- rv << [ OP_REQUEST_TIME, *usec_conv_pair(tok, $1.to_i) ]
95
+ rv << [ OP_REQUEST_TIME, *usec_conv_pair(tok, $1.to_i), 0 ]
96
+ when /\A\$request_time\{(\d+),(\d+)\}\z/
97
+ ipow = $1.to_i
98
+ prec = $2.to_i
99
+ if ipow > 9 # nanosecond precision is the highest POSIX goes
100
+ raise ArgumentError, "#{tok}: too big: #{ipow} (max=9)"
101
+ end
102
+ rv << [ OP_REQUEST_TIME, *usec_conv_pair(tok, prec), ipow ]
96
103
  else
97
104
  tok_sym = tok[1..-1].to_sym
98
105
  if special_code = SPECIAL_VARS[tok_sym]
data/pkg.mk CHANGED
@@ -127,7 +127,8 @@ publish_doc:
127
127
  -git set-file-times
128
128
  $(MAKE) doc
129
129
  $(MAKE) doc_gz
130
- $(RSYNC) -av doc/ $(RSYNC_DEST)/
130
+ $(RSYNC) -av doc/ $(RSYNC_DEST)/ \
131
+ --exclude index.html* --exclude created.rid*
131
132
  git ls-files | xargs touch
132
133
  endif
133
134
 
data/test/test_clogger.rb CHANGED
@@ -167,10 +167,11 @@ class TestClogger < Test::Unit::TestCase
167
167
  ary = compile_format(
168
168
  '$remote_addr - $remote_user [$time_local] ' \
169
169
  '"$request" $status $body_bytes_sent "$http_referer" ' \
170
- '"$http_user_agent" "$http_cookie" $request_time ' \
170
+ '"$http_user_agent" "$http_cookie" $request_time $request_time{6,0} ' \
171
171
  '$env{rack.url_scheme}' \
172
172
  "\n")
173
173
  }
174
+
174
175
  expect = [
175
176
  [ Clogger::OP_REQUEST, "REMOTE_ADDR" ],
176
177
  [ Clogger::OP_LITERAL, " - " ],
@@ -190,7 +191,9 @@ class TestClogger < Test::Unit::TestCase
190
191
  [ Clogger::OP_LITERAL, "\" \"" ],
191
192
  [ Clogger::OP_REQUEST, "HTTP_COOKIE" ],
192
193
  [ Clogger::OP_LITERAL, "\" " ],
193
- [ Clogger::OP_REQUEST_TIME, '%d.%03d', 1000 ],
194
+ [ Clogger::OP_REQUEST_TIME, '%d.%03d', 1000, 0],
195
+ [ Clogger::OP_LITERAL, " " ],
196
+ [ Clogger::OP_REQUEST_TIME, '%d', 1, 6],
194
197
  [ Clogger::OP_LITERAL, " " ],
195
198
  [ Clogger::OP_REQUEST, "rack.url_scheme" ],
196
199
  [ Clogger::OP_LITERAL, "\n" ],
@@ -209,6 +212,22 @@ class TestClogger < Test::Unit::TestCase
209
212
  assert_equal "-#{current}-\n", str.string
210
213
  end
211
214
 
215
+ def test_fiber
216
+ begin
217
+ current = Fiber.current.to_s
218
+ rescue NameError => e
219
+ warn "your Ruby does not support fibers #{e}"
220
+ return
221
+ end
222
+ str = StringIO.new
223
+ app = lambda { |env| [ 302, {}, [] ] }
224
+ cl = Clogger.new(app,
225
+ :logger => str,
226
+ :format => "-$e{Fiber.current}-\n")
227
+ status, headers, body = cl.call(@req)
228
+ assert_equal "-#{current}-\n", str.string
229
+ end
230
+
212
231
  def test_pid
213
232
  str = StringIO.new
214
233
  app = lambda { |env| [ 302, {}, [] ] }
@@ -721,6 +740,24 @@ class TestClogger < Test::Unit::TestCase
721
740
  assert s[-1].to_f <= 0.110
722
741
  end
723
742
 
743
+ def test_request_time_with_multiplier
744
+ s = []
745
+ app = lambda { |env| sleep(0.1) ; [302, [], [] ] }
746
+ cl = Clogger.new(app, :logger => s, :format => "$request_time{9,0}")
747
+ status, headers, body = cl.call(@req)
748
+ assert_nothing_raised { body.each { |x| } ; body.close }
749
+ assert s[-1].to_f >= 100000000
750
+ assert s[-1].to_f <= 300000000
751
+ end
752
+
753
+ def test_request_time_with_invalid_multiplier
754
+ s = []
755
+ app = lambda { |env| sleep(0.1) ; [302, [], [] ] }
756
+ assert_raise(ArgumentError) {
757
+ cl = Clogger.new(app, :logger => s, :format => "$request_time{10,0}")
758
+ }
759
+ end
760
+
724
761
  def test_insanely_long_time_format
725
762
  s = []
726
763
  app = lambda { |env| [200, [], [] ] }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clogger
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - cloggers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-08 00:00:00.000000000 Z
11
+ date: 2022-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -47,7 +47,7 @@ dependencies:
47
47
  description: |-
48
48
  clogger is Rack middleware for logging HTTP requests. The log format
49
49
  is customizable so you can specify exactly which fields to log.
50
- email: clogger-public@yhbt.net
50
+ email: clogger-public@YHBT.net
51
51
  executables: []
52
52
  extensions:
53
53
  - ext/clogger_ext/extconf.rb
@@ -85,7 +85,7 @@ files:
85
85
  - setup.rb
86
86
  - test/test_clogger.rb
87
87
  - test/test_clogger_to_path.rb
88
- homepage: https://yhbt.net/clogger/
88
+ homepage: https://YHBT.net/clogger/
89
89
  licenses:
90
90
  - LGPL-2.1+
91
91
  metadata: {}