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 &lt;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.


Chris

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to