ch.qos.logback.access.jetty
Class RequestLogImpl
java.lang.Object
ch.qos.logback.core.ContextBase
ch.qos.logback.access.jetty.RequestLogImpl
- All Implemented Interfaces:
- Context, AppenderAttachable<AccessEvent>, FilterAttachable<AccessEvent>, PropertyContainer, org.mortbay.component.LifeCycle, org.mortbay.jetty.RequestLog
public class RequestLogImpl
- extends ContextBase
- implements org.mortbay.jetty.RequestLog, AppenderAttachable<AccessEvent>, FilterAttachable<AccessEvent>
This class is logback's implementation of jetty's RequestLog interface.
It can be seen as logback classic's LoggerContext. Appenders can be attached
directly to RequestLogImpl and RequestLogImpl uses the same StatusManager as
LoggerContext does. It also provides containers for properties.
To
configure jetty in order to use RequestLogImpl, the following lines must be
added to the jetty configuration file, namely etc/jetty.xml:
<Ref id="requestLog">
<Set name="requestLog">
<New id="requestLogImpl" class="ch.qos.logback.access.jetty.RequestLogImpl"></New>
</Set>
</Ref>
By default, RequestLogImpl looks for a logback configuration file called
logback-access.xml, in the same folder where jetty.xml is located, that is
etc/logback-access.xml. The logback-access.xml file is slightly
different than the usual logback classic configuration file. Most of it is
the same: Appenders and Layouts are declared the exact same way. However,
loggers elements are not allowed. It is possible to put the logback
configuration file anywhere, as long as it's path is specified. Here is
another example, with a path to the logback-access.xml file.
<Ref id="requestLog">
<Set name="requestLog">
<New id="requestLogImpl" class="ch.qos.logback.access.jetty.RequestLogImpl"></New>
<Set name="fileName">path/to/logback.xml</Set>
</Set>
</Ref>
Here is a sample logback-access.xml file that can be used right away:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.access.PatternLayout">
<param name="Pattern" value="%date %server %remoteIP %clientHost %user %requestURL" />
</layout>
</appender>
<appender-ref ref="STDOUT" />
</configuration>
Another configuration file, using SMTPAppender, could be:
<configuration>
<appender name="SMTP" class="ch.qos.logback.access.net.SMTPAppender">
<layout class="ch.qos.logback.access.PatternLayout">
<param name="pattern" value="%remoteIP [%date] %requestURL %statusCode %bytesSent" />
</layout>
<param name="From" value="[email protected]" />
<param name="SMTPHost" value="mail.domain.org" />
<param name="Subject" value="Last Event: %statusCode %requestURL" />
<param name="To" value="[email protected]" />
</appender>
<appender-ref ref="SMTP" />
</configuration>
- Author:
- Ceki Gülcü, Sébastien Pennec
| Methods inherited from class ch.qos.logback.core.ContextBase |
getBithTime, getConfigurationLock, getCopyOfPropertyMap, getName, getObject, getProperty, getStatusManager, putObject, putProperty, reset, setName, setStatusManager |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
DEFAULT_CONFIG_FILE
public static final String DEFAULT_CONFIG_FILE
RequestLogImpl
public RequestLogImpl()
log
public void log(org.mortbay.jetty.Request jettyRequest,
org.mortbay.jetty.Response jettyResponse)
- Specified by:
log in interface org.mortbay.jetty.RequestLog
start
public void start()
- Specified by:
start in interface org.mortbay.component.LifeCycle
stop
public void stop()
- Specified by:
stop in interface org.mortbay.component.LifeCycle
isRunning
public boolean isRunning()
- Specified by:
isRunning in interface org.mortbay.component.LifeCycle
setFileName
public void setFileName(String filename)
isStarted
public boolean isStarted()
- Specified by:
isStarted in interface org.mortbay.component.LifeCycle
isStarting
public boolean isStarting()
- Specified by:
isStarting in interface org.mortbay.component.LifeCycle
isStopping
public boolean isStopping()
- Specified by:
isStopping in interface org.mortbay.component.LifeCycle
isStopped
public boolean isStopped()
- Specified by:
isStopped in interface org.mortbay.component.LifeCycle
isFailed
public boolean isFailed()
- Specified by:
isFailed in interface org.mortbay.component.LifeCycle
addAppender
public void addAppender(Appender<AccessEvent> newAppender)
- Specified by:
addAppender in interface AppenderAttachable<AccessEvent>
iteratorForAppenders
public Iterator<Appender<AccessEvent>> iteratorForAppenders()
- Specified by:
iteratorForAppenders in interface AppenderAttachable<AccessEvent>
getAppender
public Appender<AccessEvent> getAppender(String name)
- Specified by:
getAppender in interface AppenderAttachable<AccessEvent>
isAttached
public boolean isAttached(Appender<AccessEvent> appender)
- Specified by:
isAttached in interface AppenderAttachable<AccessEvent>
detachAndStopAllAppenders
public void detachAndStopAllAppenders()
- Specified by:
detachAndStopAllAppenders in interface AppenderAttachable<AccessEvent>
detachAppender
public boolean detachAppender(Appender<AccessEvent> appender)
- Specified by:
detachAppender in interface AppenderAttachable<AccessEvent>
detachAppender
public boolean detachAppender(String name)
- Specified by:
detachAppender in interface AppenderAttachable<AccessEvent>
addFilter
public void addFilter(Filter<AccessEvent> newFilter)
- Specified by:
addFilter in interface FilterAttachable<AccessEvent>
clearAllFilters
public void clearAllFilters()
- Specified by:
clearAllFilters in interface FilterAttachable<AccessEvent>
getCopyOfAttachedFiltersList
public List<Filter<AccessEvent>> getCopyOfAttachedFiltersList()
- Specified by:
getCopyOfAttachedFiltersList in interface FilterAttachable<AccessEvent>
getFilterChainDecision
public FilterReply getFilterChainDecision(AccessEvent event)
- Specified by:
getFilterChainDecision in interface FilterAttachable<AccessEvent>
Copyright © 2005-2010 QOS.ch. All Rights Reserved.