clogger RubyGem user+dev discussion/patches/pulls/bugs/help
 help / color / mirror / code / Atom feed
From: "Iñaki Baz Castillo" <ibc@aliax.net>
To: clogger@librelist.com
Subject: Re: How to log a variable value? [SOLVED]
Date: Wed, 16 Dec 2009 16:21:45 +0100	[thread overview]
Message-ID: <200912161621.45653.ibc@aliax.net> (raw)
In-Reply-To: 200912092311.29760.ibc@aliax.net

El Miércoles, 9 de Diciembre de 2009, Iñaki Baz Castillo escribió:
> El Domingo, 6 de Diciembre de 2009, Iñaki Baz Castillo escribió:
> > El Sábado, 5 de Diciembre de 2009, Iñaki Baz Castillo escribió:
> > > El Sábado, 5 de Diciembre de 2009, Iñaki Baz Castillo escribió:
> > > > If not, perhaps I could use $remote_user, but I don't know where
> > > > Clogger reads that value from. How could I manually set a value for
> > > > $remote_user so Clogger logs it?
> > >
> > > By  inspecting Rack auth files I expect that I just must give value to
> > > env["REMOTE_USER"].
> >
> > Unfortunatelly it's not valid for me. Clogger requires to have the value
> > of env["REMOTE_USER"] already set, so it expects the usage of Rack Auth
> > application (which is runned at the beginning).
> >
> > However I don't use Rack auth, neither other authentication way. My
> > server just receives the request with a header like:
> >   X-Identity: "IBC <sip:ibc@aliax.net>"
> > so in the log I want to show "sip:ibc@aliax.net" (and not the entire
> > value of this header).
> >
> > I build the Rack app by doing the following:
> >
> > -------------------------
> >
> > :Rack::Builder.new do
> >
> >   use ::Clogger,
> >
> >       :logger => ::File.open(XXXXXXXXX, "ab"),
> >       :
> >                  :format => "[$time_local{%b %d %Y %H:%M:%S}]
> >                  : $remote_user $ip
> >
> >                  \"$request_method $request_uri\" $status
> > $body_bytes_sent bytes $request_time{4} sec".freeze
> >
> >   map "/", &::MyProject::handle_request
> >
> > end
> > --------------------------
> >
> >
> > In this way I cannot set the value for env["REMOTE_USER"] before using
> >  Clogger because I parse the content of "X-Identity" header into the
> > method MyProject::handle_request.
> >
> > Any help please? Thanks a lot.

ok, after understanding how env is handled by some middlewares (using "merge") 
I've found the solution:

  use Init
  use Clogger
  map "/", MyApp

so in Init I do:

      def call(env)
        # Create env["REMOTE_USER"] so it can be latter replaced
         (String#replaced) by the main application and Rack would log it.
        env["REMOTE_USER"] = ""
        @app.call(env)
      end


and later in MyApp I set value:

  env["REMOTE_USER"].replace("my value")


In this way my modified env["REMOTE_USER"] value is visible for Clogger. :)


Regards.

-- 
Iñaki Baz Castillo <ibc@aliax.net>

           reply	other threads:[~2009-12-16 15:22 UTC|newest]

Thread overview: expand[flat|nested]  mbox.gz  Atom feed
 [parent not found: <200912092311.29760.ibc@aliax.net>]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://yhbt.net/clogger/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200912161621.45653.ibc@aliax.net \
    --to=ibc@aliax.net \
    --cc=clogger@librelist.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhbt.net/clogger.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).