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