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

Reply via email to