===================================================================================
Tomcat 5.5.10 Virtual Host example setup with log4j logging per host
===================================================================================

I hope this can be of some use to those who are confused about how to add 
logging to Virtual Hosts in Tomcat 5.5 Series since the disappearance of 
FileLogger.

You will need to be able to configure DNS resolution for this example.

In this example I setup 2 Virtual Hosts each with their own web applications. 
Each
host gets its own log.

I cause an exception in one of the Virtual Hosts to show that its logging is 
directed
into its log.

Virtual Host DNS Entries
------------------------

Create 2 DNS entries to the Tomcat target machine

tomcata.qas.com
tomcatb.qas.com

Tomcat 5.5.10
-------------

Download and unzip somewhere.

Virtual Host Web Applications
-----------------------------

Create directories for the vhost webapps

catalina_home/webapps-a
catalina_home/webapps-b

Copy ROOT and jsp-examples directories from catalina_home/webapps into both 
webapps-a and webapps-b

Setup the exception test
------------------------

Enter webapps-b/jsp-examples
Create file test.jsp and add into it

<% throw new Exception(); %>

log4j.properties
----------------

Create file log4j.properties in catalina_home/common/classes and copy the 
following into it;

# Root
log4j.rootCategory=error, R

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=c:/jakarta-tomcat-5.5.10/logs/tomcat-root.log
log4j.appender.R.MaxFileSize=1500KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d - %5p (%C:%L) - %m%n

# VH A
log4j.appender.A=org.apache.log4j.RollingFileAppender
log4j.appender.A.File=c:/jakarta-tomcat-5.5.10/logs/tomcat-a.log
log4j.appender.A.MaxFileSize=1500KB
log4j.appender.A.MaxBackupIndex=1
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern=%d - %5p (%C:%L) - %m%n

# VH B
log4j.appender.B=org.apache.log4j.RollingFileAppender
log4j.appender.B.File=c:/jakarta-tomcat-5.5.10/logs/tomcat-b.log
log4j.appender.B.MaxFileSize=1500KB
log4j.appender.B.MaxBackupIndex=1
log4j.appender.B.layout=org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern=%d - %5p (%C:%L) - %m%n

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG,
 R
log4j.additivity.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=false

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[tomcata.qas.com]=DEBUG,
 A
log4j.additivity.org.apache.catalina.core.ContainerBase.[Catalina].[tomcata.qas.com]=false

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[tomcatb.qas.com]=DEBUG,
 B
log4j.additivity.org.apache.catalina.core.ContainerBase.[Catalina].[tomcatb.qas.com]=false

server.xml
----------

After the localhost Host element, add the Virtual Hosts (here I also add per 
Host access logs)

<Host name="tomcata.qas.com" appBase="webapps-a">
  <Valve 
    className="org.apache.catalina.valves.FastCommonAccessLogValve"
    directory="logs"  
    prefix="a_access_log." 
    suffix=".txt"                
    pattern="common" 
    resolveHosts="false"/> 
</Host>

<Host name="tomcatb.qas.com" appBase="webapps-b">
  <Valve 
    className="org.apache.catalina.valves.FastCommonAccessLogValve"
    directory="logs"  
    prefix="b_access_log." 
    suffix=".txt"                
    pattern="common" 
    resolveHosts="false"/> 
</Host>  

logging jars
------------

Download and copy log4j1.2.9.jar into catalina_home/common/lib
Download and copy commons-logging.jar into catalina_home/common/lib

Finish and Test
---------------

That's it. Start Tomcat and go into the logs directory. You should see all the 
new logs created with some default startup information. 

Now browse to 

http://tomcata.qas.com:8080/ (you should get the ROOT tomcat welcome page)
http://tomcatb.qas.com:8080/test.jsp (you should get an exception, check the 
tomcat-b.log

Summary
-------

Note that this is virtual host logging, it is not webapp logging. For webapp 
logging you need to configure log4j within the web application itself which is 
another example.

-- end --

> -----Original Message-----
> From: Allistair Crossley 
> Sent: 12 August 2005 13:57
> To: tomcat-user@jakarta.apache.org
> Cc: Robert Abbate
> Subject: RE: Tomcat 5.5 upgrade + logging problems
> 
> 
> Hi Robert,
> 
> The fact is that followed precisely the instructions do work. 
> I *almost* guarantee this because I walked through it just 
> last week with a guy on a vanilla Tomcat 5.5.9 install and I 
> deal with Tomcat and logging daily.
> 
> The question is, what kind of logging do you want, because 
> there are 2 types. The old FileLogger was internal logging 
> mixed with webapp logging. Tomcat 5.5 aims to decouple itself 
> from a custom logging implementation and uses the Commons 
> Logging wrapper to allow developers to customise their 
> logging output in a more flexible and powerful way. 
> 
> Therefore the developers did not do a *bad thing* as you 
> describe, you are simply peeved off that you don't understand 
> the change. That's natural, noone likes change, but change is 
> inevitable if we are to do things better. Granted that 
> FileLogger was probably easier, but it was not as powerful or 
> flexible. And perhaps the logging page is not the most 
> straightforward but it does work when followed.
> 
> So now, if you want Tomcat core classes logging, i.e internal 
> Tomcat logging, then you need to have a log4j.properties file 
> inside tomcat/common/classes and *both* the log4j jar *and* 
> commons logging jar in tomcat/common/lib. This information in 
> my view is not all that useful unless you're trying to get to 
> the nitty gritty of what's happening. More than likely you 
> are more interested in per-webapp logging.
> 
> If you want logging for a web application in particular, then 
> you need a log4j.properties in the webapp's classes folder 
> and log4j jar only in the lib.
> 
> History on this list shows us that logging configuration 
> issues like these are almost always caused by something the 
> user has misunderstood or done in their "customisation" or 
> web application. 
> 
> As for the multiple virtual hosts with webapps;
> 
> log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina]
> .[localhost][/yourwebappname]=DEBUG, R
> 
> You'll recognise localhost is a servername, so perhaps you 
> could try using your virtual host name and let us know if that works.
> 
> Cheers, Allistair.
> 
> > -----Original Message-----
> > From: Robert Abbate [mailto:[EMAIL PROTECTED]
> > Sent: 12 August 2005 01:37
> > To: Allistair Crossley
> > Subject: RE: Tomcat 5.5 upgrade + logging problems
> > 
> > 
> > I appreciate your response, but I can assure you there are 
> > many out there
> > which are not able to get this going EVEN after following the scant
> > instructions. I had consulted at least 5 other webhosting 
> > companies that I
> > am in contact with all having the same issue. There is 
> > something wrong and
> > not much help so far. Tomcat developers did a bad thing by 
> > removing support
> > for Logger element. They didn't have to do that since it 
> worked fine.
> > 
> > Also, I see your site doesn't address a virtual /multiple 
> host setup; I have
> > not seen any help anywhere on this setup as we are requesting.
> > 
> > 
> > -----Original Message-----
> > From: Allistair Crossley [mailto:[EMAIL PROTECTED]
> > Sent: Friday, August 12, 2005 3:07 AM
> > To: Tomcat Users List
> > Subject: RE: Tomcat 5.5 upgrade + logging problems
> > 
> > 
> > Really, this has been discussed to death on this mailing 
> list. The 5.5
> > logging page for a start gives you instructions for setting 
> > logging up.
> > Also, I have a blog at www.adcworks.com/blog that touches on 5.5
> > configuration and logging.
> > 
> > Allistair.
> > 
> > > -----Original Message-----
> > > From: Robert Abbate [mailto:[EMAIL PROTECTED]
> > > Sent: 11 August 2005 15:43
> > > To: tomcat-user@jakarta.apache.org
> > > Subject: Tomcat 5.5 upgrade + logging problems
> > >
> > >
> > > Hi. I have searched through archives and online for such
> > > solutions for the
> > > depreciated "<Logger" element. We have a virtual host setup
> > > and requires
> > > separate logs for each host. We have followed the
> > > instructions such as this:
> > >
> > > jakarta.apache.org/tomcat/tomcat-5.5-doc/logging.html
> > >
> > > we've put log4j.properties file in each host's
> > > WEB-INF/classes folder, and
> > > log4j1.2.8.jar into WEB-INF/lib in each host
> > >
> > > still, nothing seems to work. there must be something we 
> > are missing.
> > >
> > >
> > > CONFIGURATION:
> > >
> > > CATALINA_HOME="/var/tomcat5"
> > > TOMCAT_USER="apache"
> > > JAVA_HOME="/usr/java"
> > > CATALINA_OPTS="-Xmx1228M -Djava.awt.headless=true"
> > >  java= 1.5.0_03
> > >
> > > server.xml
> > > ....CUT....
> > > <Host name="domain.com" unpackWARs="true" autoDeploy="true"
> > > appBase="/home/rondelli/html">
> > >   <Realm className="org.apache.catalina.realm.MemoryRealm"
> > > pathname="/var/tomcat5/conf/tomcat-users/rondelli-t
> > > omcat-users.xml"/>
> > >   <Context path="" docBase="/home/rondelli/html" debug="0"/>
> > > <Alias>www.domain.com</Alias>
> > > <Context path="/tomcatmanager"
> > > docBase="/var/tomcat5/server/webapps/manager"
> > > debug="0" privileged="true"/>
> > >      <Logger className="org.apache.catalina.logger.FileLogger"
> > > prefix="domain.com_log." suffix=".txt" directo
> > > ry="/home/rondelli" timestamp="true"/>
> > > </Host>
> > >
> > > <Host name="domain2.com" unpackWARs="true" autoDeploy="true"
> > > appBase="/home/revisionten/html">
> > >   <Realm className="org.apache.catalina.realm.MemoryRealm"
> > > pathname="/var/tomcat5/conf/tomcat-users/revisionte
> > > n-tomcat-users.xml"/>
> > >   <Context path="" docBase="/home/revisionten/html" debug="0"/>
> > > <Alias>www.domain2.com</Alias>
> > > <Context path="/tomcatmanager"
> > > docBase="/var/tomcat5/server/webapps/manager"
> > > debug="0" privileged="true"/>
> > >      <Logger className="org.apache.catalina.logger.FileLogger"
> > > prefix="domain2.com_log." suffix=".txt" dire
> > > ctory="/home/revisionten" timestamp="true"/>
> > > </Host>
> > > ....CUT.....
> > >
> > >
> > > /usr/java/bin/java
> > > -Djava.util.logging.manager=org.apache.juli.ClassLoaderLo
> > > gManager -Xmx1228M -Djava.awt.headless=true
> > > -Djava.endorsed.dirs=/var/tomcat
> > > 5/common/endorsed -classpath
> > > :/var/tomcat5/bin/bootstrap.jar:/var/tomcat5/bin/commons-loggi
> > > ng-api.jar:/us
> > > r/java/jre/lib/mysql-connector-java-3.0.15-ga-bin.jar:/var/tom
> > > cat5/common/li
> > > b/log4j-1.2.8.jar -Dcatalina.base=/var/tomcat5
> > > -Dcatalina.home=/var/tomcat5
> > > -Djava.io.tmpdir=/var/tomcat5/temp
> > > org.apache.catalina.startup.Bootstrap
> > > start
> > >
> > > Does anyone have a setup like this and can offer any clues?
> > > If you need any
> > > further config details, please ask. I hope I gave all necessary.
> > >
> > >
> > > 
> > 
> ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: 
> [EMAIL PROTECTED]
> > >
> > >
> > 
> > 
> > <FONT SIZE=1 FACE="VERDANA,ARIAL" COLOR=BLUE>
> > -------------------------------------------------------
> > QAS Ltd.
> > Registered in England: No 2582055
> > Registered in Australia: No 082 851 474
> > -------------------------------------------------------
> > </FONT>
> > 
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > 
> > 
> > 
> > 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to