Is it possible to log IP Address of requestor with custom AccessLogValve pattern?

2006-10-30 Thread Rashmi Rubdi
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 quot;%rquot; %s %b quot;%{Referer}iquot; 
quot;%{User-Agent}iquot; 
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.1 is 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Is it possible to log IP Address of requestor with custom AccessLogValve pattern?

2006-10-30 Thread Li

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 [EMAIL PROTECTED] 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.1 is
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





--
When we invent time, we invent death.


Re: Is it possible to log IP Address of requestor with custom AccessLogValve pattern?

2006-10-30 Thread Rashmi Rubdi
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 [EMAIL PROTECTED]
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 [EMAIL PROTECTED] 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.1 is
 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: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]




-- 
When we invent time, we invent death.



-
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Is it possible to log IP Address of requestor with custom AccessLogValve pattern?

2006-10-30 Thread Pid
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 [EMAIL PROTECTED]
 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 [EMAIL PROTECTED] 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.1 is
 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: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]


 
 


-
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Is it possible to log IP Address of requestor with custom AccessLogValve pattern?

2006-10-30 Thread Li

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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED]
 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 [EMAIL PROTECTED] 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: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]






-
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





--
When we invent time, we invent death.


Re: Is it possible to log IP Address of requestor with custom AccessLogValve pattern?

2006-10-30 Thread Rashmi Rubdi
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 [EMAIL PROTECTED]
To: Tomcat Users List users@tomcat.apache.org; [EMAIL PROTECTED]
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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED]
  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 [EMAIL PROTECTED] 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: [EMAIL PROTECTED]
  For additional commands, 

Re: Is it possible to log IP Address of requestor with custom AccessLogValve pattern?

2006-10-30 Thread Rashmi Rubdi
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 [EMAIL PROTECTED]
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 [EMAIL PROTECTED]
To: Tomcat Users List users@tomcat.apache.org; [EMAIL PROTECTED]
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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED]
  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 [EMAIL PROTECTED] 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 

Re: Is it possible to log IP Address of requestor with custom AccessLogValve pattern?

2006-10-30 Thread Li

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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED]
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 [EMAIL PROTECTED]
To: Tomcat Users List users@tomcat.apache.org; [EMAIL PROTECTED]
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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED]
  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 [EMAIL PROTECTED] 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 

Re: Is it possible to log IP Address of requestor with custom AccessLogValve pattern?

2006-10-30 Thread Rashmi Rubdi
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 quot;%rquot; %s %b 
quot;%{Referer}iquot; quot;%{User-Agent}iquot; 
 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 [EMAIL PROTECTED]
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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED]
 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 [EMAIL PROTECTED]
 To: Tomcat Users List users@tomcat.apache.org; [EMAIL PROTECTED]
 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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED]
   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
 

Re: Is it possible to log IP Address of requestor with custom AccessLogValve pattern?

2006-10-30 Thread Li

Hi Rashmi,

Thank you for sharing.

Have a nice day.

Li

On 10/31/06, Rashmi Rubdi [EMAIL PROTECTED] 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 [EMAIL PROTECTED]
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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED]
 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 [EMAIL PROTECTED]
 To: Tomcat Users List users@tomcat.apache.org; [EMAIL PROTECTED]
 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 [EMAIL PROTECTED] 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 [EMAIL PROTECTED]
   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
 
 

Re: Is it possible to log IP Address of requestor with custom AccessLogValve pattern?

2006-10-30 Thread Li

Hi Rashmi,

What you use is ok, but it wont work for every case, in case of no proxy
used, %{x-forwarded-for}i; may not work ...

Regards

On 10/31/06, Li [EMAIL PROTECTED] wrote:


Hi Rashmi,

Thank you for sharing.

Have a nice day.

Li

On 10/31/06, Rashmi Rubdi [EMAIL PROTECTED]  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 [EMAIL PROTECTED]
 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  [EMAIL PROTECTED] 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  [EMAIL PROTECTED]
  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 [EMAIL PROTECTED]
  To: Tomcat Users List  users@tomcat.apache.org; [EMAIL PROTECTED]
  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  [EMAIL PROTECTED] 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 [EMAIL PROTECTED] 
To: Tomcat 

Re: Is it possible to log IP Address of requestor with custom AccessLogValve pattern?

2006-10-30 Thread Rashmi Rubdi
Hi Li, 

In my case my *website* itself is behind a proxy, that's why no matter who 
(remote or local) made the request it always shows the local IP 127.0.0.1, I 
have no choice but to use 
the x-forwarded-for header. As long as the site is behind a proxy I'll have to 
settle with x-forwarded-for . If my host provider removes the proxy then only I 
can use %a and %h.

But in your case your *website* is not behind a proxy, that's why 
%{x-forwarded-for}i doesn't work for you , I think. So in your case simply 
using %a and/or %h is sufficient.

I think %{x-forwarded-for}i  could also be used to capture the IP Address of a 
*client* that's behind a proxy, but I haven't tested this.

-Regards
Rashmi

- Original Message 
From: Li [EMAIL PROTECTED]
To: Tomcat Users List users@tomcat.apache.org
Sent: Monday, October 30, 2006 11:23:34 PM
Subject: Re: Is it possible to log IP Address of requestor with custom 
AccessLogValve pattern?


Hi Rashmi,

What you use is ok, but it wont work for every case, in case of no proxy
used, %{x-forwarded-for}i; may not work ...

Regards

On 10/31/06, Li [EMAIL PROTECTED] wrote:

 Hi Rashmi,

 Thank you for sharing.

 Have a nice day.

 Li

 On 10/31/06, Rashmi Rubdi [EMAIL PROTECTED]  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 [EMAIL PROTECTED]
  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  [EMAIL PROTECTED] 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  [EMAIL PROTECTED]
   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 [EMAIL PROTECTED]
   To: Tomcat Users List  users@tomcat.apache.org; [EMAIL PROTECTED]
   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  [EMAIL PROTECTED] wrote:
   
Do you have a local proxy between the tomcat instance and the
  requestor?

Re: Is it possible to log IP Address of requestor with custom AccessLogValve pattern?

2006-10-30 Thread Li

Hi,

I am using my own log handler which is application server independent. the
pattern you use for dealing with proxy is ok, in some case, we try to find
an approach to be adaptive for both cases that with or without proxy. It's
good to hear that you solve your problem.

Li

On 10/31/06, Rashmi Rubdi [EMAIL PROTECTED] wrote:


Hi Li,

In my case my *website* itself is behind a proxy, that's why no matter who
(remote or local) made the request it always shows the local IP 127.0.0.1,
I have no choice but to use
the x-forwarded-for header. As long as the site is behind a proxy I'll
have to settle with x-forwarded-for . If my host provider removes the proxy
then only I can use %a and %h.

But in your case your *website* is not behind a proxy, that's why
%{x-forwarded-for}i doesn't work for you , I think. So in your case simply
using %a and/or %h is sufficient.

I think %{x-forwarded-for}i  could also be used to capture the IP Address
of a *client* that's behind a proxy, but I haven't tested this.

-Regards
Rashmi

- Original Message 
From: Li [EMAIL PROTECTED]
To: Tomcat Users List users@tomcat.apache.org
Sent: Monday, October 30, 2006 11:23:34 PM
Subject: Re: Is it possible to log IP Address of requestor with custom
AccessLogValve pattern?


Hi Rashmi,

What you use is ok, but it wont work for every case, in case of no proxy
used, %{x-forwarded-for}i; may not work ...

Regards

On 10/31/06, Li [EMAIL PROTECTED] wrote:

 Hi Rashmi,

 Thank you for sharing.

 Have a nice day.

 Li

 On 10/31/06, Rashmi Rubdi [EMAIL PROTECTED]  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 [EMAIL PROTECTED]
  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  [EMAIL PROTECTED] 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  [EMAIL PROTECTED]
   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 [EMAIL PROTECTED]
   To: Tomcat Users List  users@tomcat.apache.org; [EMAIL PROTECTED]
   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