tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Li <ampyx...@gmail.com>
Subject Re: Is it possible to log IP Address of requestor with custom AccessLogValve pattern?
Date Tue, 31 Oct 2006 04:07:28 GMT
Hi Rashmi,

Thank you for sharing.

Have a nice day.

Li

On 10/31/06, Rashmi Rubdi <dev_subscriptions@yahoo.com> wrote:
>
> Hi Li,
>
> I'm sorry I should have re-referenced the AccessLogValve documentation
> earlier.
>
> I can still get this to work with the AccessLogValve custom pattern itself
> by adding the request header in this
> pattern element %{xxx}i , where xxx is the request header.
>
> The following also worked, as shown below:
>
>         <Valve className="org.apache.catalina.valves.AccessLogValve"
> directory="logs"
> pattern="%{x-forwarded-for}i; %H %u %t "%r" %s %b "%{Referer}i"
> "%{User-Agent}i""
> prefix="localhost_access_log." resolveHosts="false" suffix=".txt" />
>
> May be this kind of setup will slow down the performance of the site, but
> I'll probably disable the logging after getting an initial sample of search
> engine bots.
>
> Thanks for your suggestions and help, I will keep those in mind. I still
> need to learn Log4J and logging in general.
>
> But for now, this setup is sufficient.
>
> -Regards
> Rashmi
>
>
> ----- Original Message ----
> From: Li <ampyx.li@gmail.com>
> To: Tomcat Users List <users@tomcat.apache.org>
> Sent: Monday, October 30, 2006 9:20:50 PM
> Subject: Re: Is it possible to log IP Address of requestor with custom
> AccessLogValve pattern?
>
>
> Hi Rashmi,
>
> You can creater your own log handler and pack it as jar and put it under
> tomcat lib dir, modify the loggin.properties file to have your handler
> work.
>
> Also, you can create your own request processor or intercepter to retrieve
> source ip from header and pass to logger.
>
> Regards
>
>
> On 10/31/06, Rashmi Rubdi <dev_subscriptions@yahoo.com> wrote:
> >
> > I think my web site is behind a proxy, I was told that
> > request.getHeader("x-forwarded-for") should work instead of
> > request.getRemoteAddr() , and it does work when I try it.
> >
> > The site correctly shows the remote client's IP Address.
> >
> > I guess there's no pattern element in Access Log Valve for capturing the
> > x-forwarded-for.
> >
> > I might have to log it with Log4J.
> >
> > Sincerely
> > -Rashmi
> > ----- Forwarded Message ----
> > From: Rashmi Rubdi <dev_subscriptions@yahoo.com>
> > To: Tomcat Users List <users@tomcat.apache.org>
> > Sent: Monday, October 30, 2006 5:03:44 PM
> > Subject: Re: Is it possible to log IP Address of requestor with custom
> > AccessLogValve pattern?
> >
> >
> > Hi Li and Pid,
> >
> > Thanks again for your replies.
> >
> > You are right, I also tried printing request.getRemoteAddr() in a JSP,
> and
> > it always lists 127.0.0.1
> >
> > As you have suggested my site could be behind a proxy, but I don't know
> > this for sure. I've asked the host provider if this is the case and
> waiting
> > for a reply.
> >
> > I also use Javascript based logging but that only logs requests coming
> > from a browser and correctly logs the IP address of the requestor
> however,
> > it does not log
> > search engine bots I guess because bots disable Javascript or can't work
> > with Javascript.
> >
> > -Regards
> > Rashmi
> >
> > ----- Original Message ----
> > From: Li <ampyx.li@gmail.com>
> > To: Tomcat Users List <users@tomcat.apache.org>; p@pidster.com
> > Sent: Monday, October 30, 2006 8:39:12 AM
> > Subject: Re: Is it possible to log IP Address of requestor with custom
> > AccessLogValve pattern?
> >
> >
> > Hi Rashmi,
> >
> > if there is problem with retrieving correct remote IP address, log4j
> will
> > not solve problem ...
> >
> > it seems like this:
> >
> > remote user ---(send request) ---> your proxy (or maybe you use some
> > connector or forwardor) ----> tomcat
> >
> > if 127.0.0.1, seems your connector or forwardoer is located in the same
> > host
> > as your tomcat sharing same IP address or hostname
> >
> > if not 127.0.0.1, seems the request comes from proxy
> >
> >
> >
> > On 10/30/06, Pid <p@pidster.com> wrote:
> > >
> > > Do you have a local proxy between the tomcat instance and the
> requestor?
> > >
> > >
> > >
> > > Rashmi Rubdi wrote:
> > > > Li,
> > > >
> > > > Thanks for the reply.
> > > >
> > > > As indicated in your illustration,  in your case the remote IP
> address
> > > (IP of the client browser) is correctly displaying.
> > > >
> > > > But in my case, for some reason even when my website is accessed
> > > remotely it always shows local IP Address (the website's IP address)
> and
> > not
> > > the remote IP address.
> > > >
> > > > In other words
> > > > %a %A %h  is translating *always* to
> > > > 127.0.0.1
> > > > 68.120.115.43
> > > > 127.0.0.1
> > > >
> > > > Where 68.120.115.43  is the IP address of the website host and not
> the
> > > client (remote host).
> > > >
> > > > The website is hosted on a Tomcat 5.5 which is configured as a
> virtual
> > > host. I wonder if the virtual host setting might be the cause for not
> > > logging the actual remote IP address.
> > > >
> > > > If I can't get Access Log Valve to log the remote IP address then I
> > > might have to try it with Log4J with Commons Logging to log the remote
> > IP
> > > address I guess.
> > > >
> > > > -Regards
> > > > Rashmi
> > > >
> > > > ----- Original Message ----
> > > > From: Li <ampyx.li@gmail.com>
> > > > To: Tomcat Users List <users@tomcat.apache.org>
> > > > Sent: Monday, October 30, 2006 3:25:38 AM
> > > > Subject: Re: Is it possible to log IP Address of requestor with
> custom
> > > AccessLogValve pattern?
> > > >
> > > >
> > > > what you defined is correct ...  a simpler way is using default
> > setting
> > > > <Valve
> > > >                   className="
> org.apache.catalina.valves.AccessLogValve
> > "
> > > >                   directory="logs"
> > > >                   prefix="your-site-access-log-"
> > > >                   suffix=".log"
> > > >                   pattern="common"
> > > >                   resolveHosts="false"/>
> > > >
> > > > the result should be
> > > > (if you are testing from same host)
> > > > 127.0.0.1 - - [18/Oct/2006:18:54:48 +0800] "GET /site/ HTTP/1.1" 200
> > 306
> > > > 127.0.0.1 - - [18/Oct/2006:18:54:48 +0800] "GET /site/Welcome.do
> > > HTTP/1.1"
> > > > 200 1775
> > > > (if your user testing from remote host)
> > > > 202.110.6.23 - - [18/Oct/2006:19:03:44 +0800] "GET /site/Welcome.do
> > > > HTTP/1.1" 200 8893
> > > > ...
> > > >
> > > > On 10/30/06, Rashmi Rubdi <dev_subscriptions@yahoo.com> wrote:
> > > >> Hello,
> > > >>
> > > >> My site is hosted on Tomcat 5.5 and I'm trying to log the IP
> Address
> > of
> > > >> search engine bots that crawl the site.
> > > >>
> > > >> After reading the following documentation here, which is written
> very
> > > >> nicely btw
> > > >> http://tomcat.apache.org/tomcat-5.5-doc/config/valve.html
> > > >>
> > > >>
> > >
> >
> http://tomcat.apache.org/tomcat-5.5-doc/catalina/docs/api/org/apache/catalina/valves/AccessLogValve.html
> > > >>
> > > >> I configured the pattern attribute of AccessLogValve as follows:
> > > >>
> > > >> <Valve className="org.apache.catalina.valves.AccessLogValve"
> > > >> directory="logs"
> > > >> pattern="%a %A %h %H %u %t "%r" %s %b "%{Referer}i"
> "%{User-Agent}i""
> > > >> prefix="localhost_access_log." resolveHosts="false" suffix=".txt"
> />
> > > >>
> > > >> The following is a sample of what gets logged with the above
> > > configuration
> > > >> in server.xml .
> > > >>
> > > >> 127.0.0.1 68.120.115.43 127.0.0.1 HTTP/1.1 - [29/Oct/2006:23:50:13
> > > -0800]
> > > >> "GET /web/_stylesheet/table.css HTTP/1.1" 304 - "
> > > >> http://www.website.com/c/a_page.jsp";;;; "Mozilla/5.0 (Windows; U;
> > Windows
> > > NT
> > > >> 5.1; en-US; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7"
> > > >>
> > > >> The documentation says that %a is Remote IP Address, however
> > 127.0.0.1is
> > > >> being logged instead of the IP Address of the requestor.
> > > >>
> > > >> Is this correct?
> > > >>
> > > >> IMO %a should be the IP Address of the agent that's making the
> > request
> > > - (
> > > >> i.e. the IP Address of a browser or a bot etc).
> > > >>
> > > >> Please let me know if there's a way to log IP Address of the agent
> > > that's
> > > >> making the request.
> > > >>
> > > >> Any help is appreciated.
> > > >>
> > > >> -Thank you
> > > >> Rashmi
> > > >>
> > > >>
> > > >>
> > > >>
> ---------------------------------------------------------------------
> > > >> To start a new topic, e-mail: users@tomcat.apache.org
> > > >> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> > > >> For additional commands, e-mail: users-help@tomcat.apache.org
> > > >>
> > > >>
> > > >
> > > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To start a new topic, e-mail: users@tomcat.apache.org
> > > To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> > > For additional commands, e-mail: users-help@tomcat.apache.org
> > >
> > >
> >
> >
> > --
> > When we invent time, we invent death.
> >
> >
> >
> > ---------------------------------------------------------------------
> > To start a new topic, e-mail: users@tomcat.apache.org
> > To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> > For additional commands, e-mail: users-help@tomcat.apache.org
> >
> >
> >
> > ---------------------------------------------------------------------
> > To start a new topic, e-mail: users@tomcat.apache.org
> > To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> > For additional commands, e-mail: users-help@tomcat.apache.org
> >
> >
>
>
> --
> When we invent time, we invent death.
>
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: users@tomcat.apache.org
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
>


-- 
When we invent time, we invent death.

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message