Right. The tomcat directory is available through the environment somehow, and is accessed as ${catalina.home}. From here I can get to the tomcat logs directory. What else is exposed this way? I am hoping that if the host and context are available in the logging message itself, then maybe they are/can be exposed. Those values are generated internally by tomcat when it dumps that stack trace, they weren't part of the original logging message.
On Fri, Sep 18, 2009 at 8:30 PM, Rainer Jung <rainer.j...@kippdata.de> wrote: > On 19.09.2009 02:18, Chris Cheshire wrote: >> I'm reconfiguring the logging for my tomcat installation (6.0.20) to >> use logback (instead of log4j) for the server logging so I can split >> out error messages on a per host basis. I see that "catalina.home" is >> exposed as an environment var and usable in the logging configuration >> file - what about the hostname and context name/path? >> >> I would like to set up a config file such that I don't have to edit it >> every time I add a new sandbox for a developer (host). I want the >> errors split out per host instead of one big file, because it makes it >> possible to tell which sandbox had a problem with a JSP page for >> instance. >> >> I have it working if I hardcode a new appender per host going to a >> separate file - something like : >> >> <root level="INFO"> >> <appender-ref ref="tomcat" /> >> </root> >> >> <logger >> name="org.apache.catalina.core.ContainerBase.[Catalina].[a.domain.com]" >> level="INFO" >> additivity="false"> >> <appender-ref ref="tomcat_www" /> >> </logger> >> >> and then two appenders, one for base logging from the tomcat >> container, and then one for the host "a.domain.com". >> >> <appender name="tomcat_www" >> class="ch.qos.logback.core.rolling.RollingFileAppender"> >> <File>${catalina.home}/logs/tomcat-www.log</File> >> <RollingPolicy >> class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> >> >> <FileNamePattern>${catalina.home}/logs/tomcat-www.%d{yyyy-MM-dd}.log.gz</FileNamePattern> >> </RollingPolicy> >> >> <layout class="ch.qos.logback.classic.PatternLayout"> >> <Pattern>%-25(%date{HH:mm:ss.SSS} [%thread]) >> %-5level%n%logger%n%msg%n</Pattern> >> </layout> >> </appender> >> >> >> Now when I log an error I see something like : >> >> 17:04:01.890 [http-8080-1] ERROR >> org.apache.catalina.core.ContainerBase.[Catalina].[a.domain.com].[/foo].[default] >> Servlet.service() for servlet default threw exception >> org.apache.jasper.JasperException: /WEB-INF/jsp/login.jsp(17,2) >> Unterminated <core:if tag >> at >> org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40) >> [jasper.jar:na] >> >> [blah blah blah] >> >> "a.domain.com" is the host where the web app is deployed. "foo" is the >> context path under which the app is deployed. So if it was able to log >> this information, it must be accessible somewhere, right? If I can get >> access to the hostname and context name I can specify a dynamic file >> name using these variables, and then only have one appender defined no >> matter how many new hosts I deploy. > > In configuration files Log4J only support two kinds of variables: > > - system properties > - variables defined previously inside Log4J (typically in the same > config file) > > Both ways do not have the ability to react on context information during > logging. > > Regards, > > Rainer > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org