tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rainer Jung <rainer.j...@kippdata.de>
Subject Re: environment variables for hostname and context name
Date Sat, 19 Sep 2009 03:30:20 GMT
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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message