<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,9 +1,22 @@
 module Rack
   class Superlogger
     module LogProcessor
+      def self.find(type)
+        case type
+        when Class
+          type
+        when String, Symbol
+          const_get type.to_s.capitalize
+        else
+          raise ArgumentError, &quot;Unexpected type class #{type.class}&quot;
+        end
+      end
+      
       class Base # may be async or sth
-        def initialize(logger, template)
-          @logger, @template = logger, template
+        attr_reader :logger
+        
+        def initialize(options)
+          @options = options
         end
         
         def process(env)
@@ -11,7 +24,13 @@ module Rack
         end
       end
 
-      class Simple &lt; Base
+      class Templated &lt; Base
+        def initialize(options)
+          @logger   = options.delete(:logger)   or raise ArgumentError, &quot;You must specify a logger&quot;
+          @template = options.delete(:template) or raise ArgumentError, &quot;You must specify a template&quot;
+          super options
+        end
+        
         def process(env)
           request = Rack::Request.new(env)
           message = @template.dup
@@ -32,15 +51,13 @@ module Rack
     REQUEST_METHODS = Rack::Request.public_instance_methods(false).
                         reject { |method_name| method_name =~ /[=\[]|content_length/ }.freeze
 
-    def initialize(app, logger, template)
-      @app = app
-      @logger = logger
-      @processor = LogProcessor::Simple.new(@logger, template)
+    def initialize(app, options)
+      @app, @processor = app, LogProcessor::find(options.delete(:type)).new(options)
     end
 
      
     def call(env)
-      env[&quot;rack.superlogger.data&quot;], env[&quot;rack.superlogger.raw_logger&quot;] = {}, @logger
+      env[&quot;rack.superlogger.data&quot;], env[&quot;rack.superlogger.raw_logger&quot;] = {}, @processor.logger
             
       before = Time.now.to_f
       status, headers, body = @app.call(env)
@@ -50,7 +67,7 @@ module Rack
       env[&quot;rack.superlogger.data&quot;][:status]         = status.to_s
       env[&quot;rack.superlogger.data&quot;][:content_length] = headers[&quot;Content-length&quot;]
       
-      @processor.process(env)
+      @processor.process env
       
       [status, headers, body]
     end</diff>
      <filename>lib/rack/contrib/superlogger.rb</filename>
    </modified>
    <modified>
      <diff>@@ -12,7 +12,7 @@ context &quot;Rack::Superlogger&quot; do
       [200, { &quot;Content-type&quot; =&gt; &quot;test/plain&quot;, &quot;Content-length&quot; =&gt; &quot;3&quot; }, [&quot;foo&quot;]] 
     }
     
-    Rack::Superlogger.new(app, logger, template).call(Rack::MockRequest.env_for(&quot;?super=logger&quot;))
+    Rack::Superlogger.new(app, {:type =&gt; &quot;Templated&quot;, :logger =&gt; logger, :template =&gt; template}).call(Rack::MockRequest.env_for(&quot;?super=logger&quot;))
   end
   
   specify &quot;should substitute :keys in template with values from 'rack.logger'&quot; do
@@ -60,6 +60,6 @@ context &quot;Rack::Superlogger&quot; do
       [200, { &quot;Content-type&quot; =&gt; &quot;test/plain&quot;, &quot;Content-length&quot; =&gt; &quot;0&quot; }, [&quot;&quot;] ] 
     }
     
-    Rack::Superlogger.new(app, logger, &quot;&quot;).call(Rack::MockRequest.env_for(&quot;/&quot;))
+    Rack::Superlogger.new(app, { :logger =&gt; logger, :template =&gt; &quot;&quot;, :type =&gt; :templated }).call(Rack::MockRequest.env_for(&quot;/&quot;))
   end
 end
\ No newline at end of file</diff>
      <filename>test/spec_rack_superlogger.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>a66757f38e583e4584c3d257a0119bc8d3cdc6cf</id>
    </parent>
  </parents>
  <author>
    <name>Maciej Lotkowski</name>
    <email>maciej.lotkowski@zenbe.com</email>
  </author>
  <url>http://github.com/ml/rack-contrib/commit/ecfe47faaa0ab1bd19ede9ecc872a9351f936c65</url>
  <id>ecfe47faaa0ab1bd19ede9ecc872a9351f936c65</id>
  <committed-date>2009-11-08T11:31:06-08:00</committed-date>
  <authored-date>2009-11-08T11:31:06-08:00</authored-date>
  <message>simplified Superlogger#initialize arguments list</message>
  <tree>39b7aebfbc076d6262f583b0be8aaa66bb5f06cd</tree>
  <committer>
    <name>Maciej Lotkowski</name>
    <email>maciej.lotkowski@zenbe.com</email>
  </committer>
</commit>
