Ok, I'm digging into this. Slowly but surely.... Just to confirm... So if I have, say 2 hosts, each with 3 web apps, and I want a different log file for each web app on each host, I need to define 6 of the following:
10host1webapp1.org.apache.juli.FileHandler.level = FINE 10host1webapp1.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 10host1webapp1.org.apache.juli.FileHandler.prefix = Host1App1. .... through 15host2webapp3.org.apache.juli.FileHandler.level = FINE 15host2webapp3.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 15host2webapp3.org.apache.juli.FileHandler.prefix = Host2App3. And then define 6 of the following: org.apache.catalina.core.ContainerBase.[Catalina].[host1].[/webapp1].level = INFO org.apache.catalina.core.ContainerBase.[Catalina].[host1].[/webapp1].handlers = 10host1webapp1.org.apache.juli.FileHandler ...through org.apache.catalina.core.ContainerBase.[Catalina].[host2].[/webapp3].level = INFO org.apache.catalina.core.ContainerBase.[Catalina].[host2].[/webapp3].handlers = 15host2webapp3.org.apache.juli.FileHandler and I put all of this in /conf/logging.properties All of this is required in order to get separate log files per webapp per host, right? Thanks. Jerry On Thu, Dec 1, 2011 at 8:50 PM, Christopher Schultz < ch...@christopherschultz.net> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Jerry, > > On 12/1/11 9:21 PM, Jerry Malcolm wrote: > > I'm trying to get my hands around the whole tomcat logging system. > > I've read the docs, wikis, samples, etc. But I still struggling a > > bit. I've been just using System.out.println for years, and it's > > getting totally out of control. So time to learn tomcat logging. > > Yup. System.out is insanely inflexible. > > > Basically, I host quite a few domains. I'd like to separate the > > log files per host (and possibly further subdivide by webapps). I > > can't find any way to specify the host as part of the logger file > > handler directory. This may be something intuitively obvious. But > > I haven't found it yet. > > Which logging system are you using? Tomcat's default is to use JULI > which connects commons-logging up to the java.util.logging (or J-U-L > Interface, hence "JULI"). > > At any rate, the standard logging.properties file should have examples > that make this work. For instance, I can see the following in mine: > > > org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level > = INFO > > org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers > = 3manager.org.apache.juli.FileHandler > > All that mess configures a logger that captures the logs for the > "manager" <Context> that is deployed into the "localhost" <Host> under > the "Catalina" <Service>. > > You can easily create one of these for each of your webapps (or even > just per host) in the same way: just use the proper Service, Host, and > context path (contexts don't have names, so you use the context path > instead -- the above for an example). > > So, let's say that you have: > > <Service name="Catalina"> > <Host name="www.awesomehost.com"> > <Context path="/sweetwebapp" docBase="..." ... /> > </Host> > </Service> > > (But, of course, you don't have that because you shouldn't put > <Context>s in server.xml, but I have it here for the sake of brevity). > > Anyhow, you can configure a logger for that context like this: > > org.apache.catalina.core.ContainerBase.[Catalina].[www.awesomehost.com > ].[/sweetwebapp].level=INFO > > (plus the other configuration you'll need like which file to use, etc.) > > > If it can't be configured statically to plug the host name into the > > log file name with a variable or something like ${catalina_home}, > > alternatively is there a way to change the file name on the fly > > after getting an instance of the java.utils.logging.Logger class? > > If you are using Tomcat's internal logging (which is done by calling > ServletContext.log(...)) then you should use lib/logging.properties as > described above. > > If you are using java.util.logging directly in your own webapp, then > you are on your own :( > > If you are using AccessLogValve, well then you just need to use "%v" > to get the name of the local server -- but that's for the actual log > data, not for the filename. > > - -chris > -----BEGIN PGP SIGNATURE----- > Version: GnuPG/MacGPG2 v2.0.17 (Darwin) > Comment: GPGTools - http://gpgtools.org > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ > > iEYEARECAAYFAk7YPN4ACgkQ9CaO5/Lv0PA0ZgCgq2ckmo/fw88FbeV0UhOVuYTm > 7uwAn1D/sE+YHVw3juxVWFVZTdMMey6T > =0R0X > -----END PGP SIGNATURE----- > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > >