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<IAccessEvent>, FilterAttachable<IAccessEvent>, PropertyContainer, org.eclipse.jetty.server.RequestLog, org.eclipse.jetty.util.component.LifeCycle
public class RequestLogImpl
- extends ContextBase
- implements org.eclipse.jetty.server.RequestLog, AppenderAttachable<IAccessEvent>, FilterAttachable<IAccessEvent>
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
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle |
org.eclipse.jetty.util.component.LifeCycle.Listener |
Methods inherited from class ch.qos.logback.core.ContextBase |
getBirthTime, getConfigurationLock, getCopyOfPropertyMap, getExecutorService, getName, getObject, getProperty, getStatusManager, putObject, putProperty, reset, setName, setStatusManager, toString |
DEFAULT_CONFIG_FILE
public static final String DEFAULT_CONFIG_FILE
RequestLogImpl
public RequestLogImpl()
log
public void log(org.eclipse.jetty.server.Request jettyRequest,
org.eclipse.jetty.server.Response jettyResponse)
- Specified by:
log
in interface org.eclipse.jetty.server.RequestLog
start
public void start()
- Specified by:
start
in interface org.eclipse.jetty.util.component.LifeCycle
stop
public void stop()
- Specified by:
stop
in interface org.eclipse.jetty.util.component.LifeCycle
isRunning
public boolean isRunning()
- Specified by:
isRunning
in interface org.eclipse.jetty.util.component.LifeCycle
setFileName
public void setFileName(String fileName)
setResource
public void setResource(String resource)
isStarted
public boolean isStarted()
- Specified by:
isStarted
in interface org.eclipse.jetty.util.component.LifeCycle
isStarting
public boolean isStarting()
- Specified by:
isStarting
in interface org.eclipse.jetty.util.component.LifeCycle
isStopping
public boolean isStopping()
- Specified by:
isStopping
in interface org.eclipse.jetty.util.component.LifeCycle
isStopped
public boolean isStopped()
- Specified by:
isStopped
in interface org.eclipse.jetty.util.component.LifeCycle
isFailed
public boolean isFailed()
- Specified by:
isFailed
in interface org.eclipse.jetty.util.component.LifeCycle
isQuiet
public boolean isQuiet()
setQuiet
public void setQuiet(boolean quiet)
addAppender
public void addAppender(Appender<IAccessEvent> newAppender)
- Specified by:
addAppender
in interface AppenderAttachable<IAccessEvent>
iteratorForAppenders
public Iterator<Appender<IAccessEvent>> iteratorForAppenders()
- Specified by:
iteratorForAppenders
in interface AppenderAttachable<IAccessEvent>
getAppender
public Appender<IAccessEvent> getAppender(String name)
- Specified by:
getAppender
in interface AppenderAttachable<IAccessEvent>
isAttached
public boolean isAttached(Appender<IAccessEvent> appender)
- Specified by:
isAttached
in interface AppenderAttachable<IAccessEvent>
detachAndStopAllAppenders
public void detachAndStopAllAppenders()
- Specified by:
detachAndStopAllAppenders
in interface AppenderAttachable<IAccessEvent>
detachAppender
public boolean detachAppender(Appender<IAccessEvent> appender)
- Specified by:
detachAppender
in interface AppenderAttachable<IAccessEvent>
detachAppender
public boolean detachAppender(String name)
- Specified by:
detachAppender
in interface AppenderAttachable<IAccessEvent>
addFilter
public void addFilter(Filter<IAccessEvent> newFilter)
- Specified by:
addFilter
in interface FilterAttachable<IAccessEvent>
clearAllFilters
public void clearAllFilters()
- Specified by:
clearAllFilters
in interface FilterAttachable<IAccessEvent>
getCopyOfAttachedFiltersList
public List<Filter<IAccessEvent>> getCopyOfAttachedFiltersList()
- Specified by:
getCopyOfAttachedFiltersList
in interface FilterAttachable<IAccessEvent>
getFilterChainDecision
public FilterReply getFilterChainDecision(IAccessEvent event)
- Specified by:
getFilterChainDecision
in interface FilterAttachable<IAccessEvent>
addLifeCycleListener
public void addLifeCycleListener(org.eclipse.jetty.util.component.LifeCycle.Listener listener)
- Specified by:
addLifeCycleListener
in interface org.eclipse.jetty.util.component.LifeCycle
removeLifeCycleListener
public void removeLifeCycleListener(org.eclipse.jetty.util.component.LifeCycle.Listener listener)
- Specified by:
removeLifeCycleListener
in interface org.eclipse.jetty.util.component.LifeCycle
Copyright © 2005-2012 QOS.ch. All Rights Reserved.