clogger 0.2.0 → 0.3.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.
- data/GIT-VERSION-GEN +1 -1
- data/GNUmakefile +1 -1
- data/README +7 -5
- data/Rakefile +2 -3
- data/ext/clogger_ext/clogger.c +13 -0
- data/lib/clogger.rb +1 -1
- data/lib/clogger/pure.rb +2 -2
- data/test/test_clogger.rb +42 -0
- metadata +2 -2
data/GIT-VERSION-GEN
CHANGED
data/GNUmakefile
CHANGED
@@ -96,7 +96,7 @@ $(release_changes):
|
|
96
96
|
$(RAKE) -s release_changes > $@+
|
97
97
|
$(VISUAL) $@+ && test -s $@+ && mv $@+ $@
|
98
98
|
$(release_notes):
|
99
|
-
GIT_URL=$(GIT_URL) $(
|
99
|
+
GIT_URL=$(GIT_URL) $(RAKE) -s release_notes > $@+
|
100
100
|
$(VISUAL) $@+ && test -s $@+ && mv $@+ $@
|
101
101
|
|
102
102
|
# ensures we're actually on the tagged $(VERSION), only used for release
|
data/README
CHANGED
@@ -20,9 +20,9 @@ is customizable so you can specify exactly which fields to log.
|
|
20
20
|
" (double quote)
|
21
21
|
all bytes in the range of \x00-\x1F
|
22
22
|
|
23
|
-
* multi-instance capable and reentrant. You can use
|
24
|
-
multi-threaded server, and even multiple Cloggers logging
|
25
|
-
different locations and different formats in the same process.
|
23
|
+
* multi-instance capable and (optionally) reentrant. You can use
|
24
|
+
Clogger in a multi-threaded server, and even multiple Cloggers logging
|
25
|
+
to different locations and different formats in the same process.
|
26
26
|
|
27
27
|
== SYNOPSIS
|
28
28
|
|
@@ -31,7 +31,8 @@ Clogger may be loaded as Rack middleware in your config.ru:
|
|
31
31
|
require "clogger"
|
32
32
|
use Clogger,
|
33
33
|
:format => Clogger::Format::Combined,
|
34
|
-
:logger => ::File.open("/path/to/log", "ab")
|
34
|
+
:logger => ::File.open("/path/to/log", "ab"),
|
35
|
+
:reentrant => true
|
35
36
|
run YourApplication.new
|
36
37
|
|
37
38
|
If you're using Rails 2.3.x or later, in your config/environment.rb
|
@@ -39,7 +40,8 @@ somewhere inside the "Rails::Initializer.run do |config|" block:
|
|
39
40
|
|
40
41
|
config.middleware.use 'Clogger',
|
41
42
|
:format => Clogger::Format::Combined,
|
42
|
-
:logger => ::File.open("/path/to/log", "ab")
|
43
|
+
:logger => ::File.open("/path/to/log", "ab"),
|
44
|
+
:reentrant => false
|
43
45
|
|
44
46
|
== VARIABLES
|
45
47
|
|
data/Rakefile
CHANGED
@@ -44,6 +44,7 @@ def tags
|
|
44
44
|
end
|
45
45
|
|
46
46
|
cgit_url = "http://git.bogomips.org/cgit/clogger.git"
|
47
|
+
git_url = ENV['GIT_URL'] || 'git://git.bogomips.org/clogger.git'
|
47
48
|
|
48
49
|
desc 'prints news as an Atom feed'
|
49
50
|
task :news_atom do
|
@@ -104,8 +105,6 @@ desc "print release notes for Rubyforge"
|
|
104
105
|
task :release_notes do
|
105
106
|
require 'rubygems'
|
106
107
|
|
107
|
-
git_url = ENV['GIT_URL'] || 'git://git.bogomips.org/clogger.git'
|
108
|
-
|
109
108
|
spec = Gem::Specification.load('clogger.gemspec')
|
110
109
|
puts spec.description.strip
|
111
110
|
puts ""
|
@@ -145,7 +144,7 @@ task :raa_update do
|
|
145
144
|
:category_minor => 'Rack',
|
146
145
|
:url => s.homepage,
|
147
146
|
:download => 'http://rubyforge.org/frs/?group_id=8896',
|
148
|
-
:license => '
|
147
|
+
:license => 'LGPL',
|
149
148
|
:description_style => 'Plain',
|
150
149
|
:description => desc,
|
151
150
|
:pass => password,
|
data/ext/clogger_ext/clogger.c
CHANGED
@@ -599,6 +599,19 @@ static VALUE clogger_init(int argc, VALUE *argv, VALUE self)
|
|
599
599
|
tmp = rb_hash_aref(o, ID2SYM(rb_intern("format")));
|
600
600
|
if (!NIL_P(tmp))
|
601
601
|
fmt = tmp;
|
602
|
+
|
603
|
+
tmp = rb_hash_aref(o, ID2SYM(rb_intern("reentrant")));
|
604
|
+
switch (TYPE(tmp)) {
|
605
|
+
case T_TRUE:
|
606
|
+
c->reentrant = 1;
|
607
|
+
break;
|
608
|
+
case T_FALSE:
|
609
|
+
c->reentrant = 0;
|
610
|
+
case T_NIL:
|
611
|
+
break;
|
612
|
+
default:
|
613
|
+
rb_raise(rb_eArgError, ":reentrant must be boolean");
|
614
|
+
}
|
602
615
|
}
|
603
616
|
|
604
617
|
init_buffers(c);
|
data/lib/clogger.rb
CHANGED
data/lib/clogger/pure.rb
CHANGED
@@ -13,7 +13,7 @@ class Clogger
|
|
13
13
|
(@logger.sync = true) rescue nil
|
14
14
|
@fmt_ops = compile_format(opts[:format] || Format::Common, opts)
|
15
15
|
@wrap_body = need_wrap_body?(@fmt_ops)
|
16
|
-
@reentrant =
|
16
|
+
@reentrant = opts[:reentrant]
|
17
17
|
@need_resp = need_response_headers?(@fmt_ops)
|
18
18
|
@body_bytes_sent = 0
|
19
19
|
end
|
@@ -28,7 +28,7 @@ class Clogger
|
|
28
28
|
status, headers, body = resp
|
29
29
|
headers = Rack::Utils::HeaderHash.new(headers) if @need_resp
|
30
30
|
if @wrap_body
|
31
|
-
@reentrant = env['rack.multithread']
|
31
|
+
@reentrant = env['rack.multithread'] if @reentrant.nil?
|
32
32
|
@env, @status, @headers, @body = env, status, headers, body
|
33
33
|
return [ status, headers, @reentrant ? self.dup : self ]
|
34
34
|
end
|
data/test/test_clogger.rb
CHANGED
@@ -545,4 +545,46 @@ class TestClogger < Test::Unit::TestCase
|
|
545
545
|
assert_equal :foo, body.close
|
546
546
|
end
|
547
547
|
|
548
|
+
def test_clogger_auto_reentrant_true
|
549
|
+
s = ''
|
550
|
+
body = []
|
551
|
+
app = lambda { |env| [302, [ %w(a) ], body ] }
|
552
|
+
cl = Clogger.new(app, :logger => s, :format => "$request_time")
|
553
|
+
@req['rack.multithread'] = true
|
554
|
+
status, headers, body = cl.call(@req)
|
555
|
+
assert cl.reentrant?
|
556
|
+
end
|
557
|
+
|
558
|
+
def test_clogger_auto_reentrant_false
|
559
|
+
s = ''
|
560
|
+
body = []
|
561
|
+
app = lambda { |env| [302, [ %w(a) ], body ] }
|
562
|
+
cl = Clogger.new(app, :logger => s, :format => "$request_time")
|
563
|
+
@req['rack.multithread'] = false
|
564
|
+
status, headers, body = cl.call(@req)
|
565
|
+
assert ! cl.reentrant?
|
566
|
+
end
|
567
|
+
|
568
|
+
def test_clogger_auto_reentrant_forced_true
|
569
|
+
s = ''
|
570
|
+
body = []
|
571
|
+
app = lambda { |env| [302, [ %w(a) ], body ] }
|
572
|
+
o = { :logger => s, :format => "$request_time", :reentrant => true }
|
573
|
+
cl = Clogger.new(app, o)
|
574
|
+
@req['rack.multithread'] = false
|
575
|
+
status, headers, body = cl.call(@req)
|
576
|
+
assert cl.reentrant?
|
577
|
+
end
|
578
|
+
|
579
|
+
def test_clogger_auto_reentrant_forced_false
|
580
|
+
s = ''
|
581
|
+
body = []
|
582
|
+
app = lambda { |env| [302, [ %w(a) ], body ] }
|
583
|
+
o = { :logger => s, :format => "$request_time", :reentrant => false }
|
584
|
+
cl = Clogger.new(app, o)
|
585
|
+
@req['rack.multithread'] = true
|
586
|
+
status, headers, body = cl.call(@req)
|
587
|
+
assert ! cl.reentrant?
|
588
|
+
end
|
589
|
+
|
548
590
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clogger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cloggers
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-02-09 00:00:00 +00:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|