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>, LifeCycle, PropertyContainer, org.eclipse.jetty.server.RequestLog
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, register, 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 LifeCycle- Overrides:
start in class ContextBase
stop
public void stop()
- Specified by:
stop in interface LifeCycle- Overrides:
stop in class ContextBase
isRunning
public boolean isRunning()
setFileName
public void setFileName(String fileName)
setResource
public void setResource(String resource)
isStarted
public boolean isStarted()
- Specified by:
isStarted in interface LifeCycle- Overrides:
isStarted in class ContextBase
isStarting
public boolean isStarting()
isStopping
public boolean isStopping()
isStopped
public boolean isStopped()
isFailed
public boolean isFailed()
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)
removeLifeCycleListener
public void removeLifeCycleListener(org.eclipse.jetty.util.component.LifeCycle.Listener listener)
Copyright © 2005-2014 QOS.ch. All Rights Reserved.