Merge branch 'jetty-9.4.x'

This commit is contained in:
Jesse McConnell 2016-07-15 14:32:56 -05:00
commit 0c1cfb350c
4 changed files with 85 additions and 21 deletions

View File

@ -23,44 +23,42 @@ There is one entry per request received, and commonly in the standard NCSA forma
[[constructing-request-log-entry]] [[constructing-request-log-entry]]
==== Constructing a Request Log Entry ==== Constructing a Request Log Entry
A standard request log entry includes the client IP address, date, method, URL, result, size, referrer, and user agent, for example: A standard request log entry includes the client IP address, date, method, URL, result, size, referrer, user agent and latency for example:
.... ....
123.4.5.6 - - [27/Aug/2004:10:16:17 +0000] 123.4.5.6 - - [27/Aug/2004:10:16:17 +0000]
"GET /jetty/tut/XmlConfiguration.html HTTP/1.1" "GET /jetty/tut/XmlConfiguration.html HTTP/1.1"
200 76793 "http://localhost:8080/jetty/tut/logging.html" 200 76793 "http://localhost:8080/jetty/tut/logging.html"
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040614 Firefox/0.8" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040614 Firefox/0.8" 342
.... ....
[[implementing-request-log]] [[implementing-request-log]]
==== Implementing a Request Log ==== Implementing a Request Log
Jetty provides an implementation called _`NCSARequestLog`_ which supports the NCSA format in files that you can roll over on a daily basis. Jetty provides an implementation called `NCSARequestLog` which supports the NCSA format in files that will roll over on a daily basis.
The http://logback.qos.ch/[Logback Project] offers http://logback.qos.ch/access.html[another implementation] of a `RequestLog` interface, providing rich and powerful HTTP-access log functionality. The http://logback.qos.ch/[Logback Project] offers http://logback.qos.ch/access.html[another implementation] of a `RequestLog` interface, providing rich and powerful HTTP-access log functionality.
If neither of these options meets your needs, you can implement a custom request logger by implementing Jetty's link:{JDURL}/org/eclipse/jetty/server/RequestLog.html[`RequestLog.java`] interface and plugging it in similar to the `NCSARequestLog`, as shown below. If neither of these options meets your needs, you can implement a custom request logger by implementing Jetty's link:{JDURL}/org/eclipse/jetty/server/RequestLog.html[`RequestLog.java`] interface and plugging it in similar to the `NCSARequestLog`, as shown below.
[[configuring-request-log]] [[configuring-request-log]]
==== Configuring a Request Log ==== Configuring the Request Log module
To configure a single request log for the entire Jetty Server instance: To enable the Request Log module for the entire server via the Jetty distribution, it first needs to be enabled on the command line:
[source, xml, subs="{sub-order}"] [source, screen, subs="{sub-order}"]
---- ----
<Configure id="Server" class="org.eclipse.jetty.server.Server"> $ java -jar ../start.jar --add-to-startd=requestlog
<Set name="RequestLog">
<New id="RequestLog" class="org.eclipse.jetty.server.AsyncNCSARequestLog"> INFO: requestlog initialised in ${jetty.base}/start.d/requestlog.ini
<Set name="filename">/var/log/jetty/yyyy_mm_dd.request.log</Set> MKDIR: ${jetty.base}/logs
<Set name="append">true</Set> INFO: Base directory was modified
<Set name="extended">false</Set>
<Set name="LogTimeZone">GMT</Set>
</New>
</Set>
</Configure>
---- ----
The equivalent code is: The above command will add a new `requestlog.ini` file to your `{$jetty.base}/start.d` directory.
If you used `--add-to-start` it will append the configuration options for the module to the `start.ini` file located in your `{$jetty.base}` directory.
The equivalent code for embedded usages of Jetty is:
[source, java, subs="{sub-order}"] [source, java, subs="{sub-order}"]
---- ----
@ -68,12 +66,13 @@ NCSARequestLog requestLog = new NCSARequestLog("/var/logs/jetty/jetty-yyyy_mm_dd
requestLog.setAppend(true); requestLog.setAppend(true);
requestLog.setExtended(false); requestLog.setExtended(false);
requestLog.setLogTimeZone("GMT"); requestLog.setLogTimeZone("GMT");
requestLog.setLogLatency(true);
server.setRequestLog(requestLog); server.setRequestLog(requestLog);
---- ----
This configures a request log in `$JETTY_HOME/logs` with filenames including the date. This configures a request log in `{$jetty.home}/logs` with filenames including the date.
Old log files are kept for 90 days before being deleted. By defaukt, log files are kept for 90 days before being deleted.
Existing log files are appended to and the extended NCSA format is used in the GMT time zone. Existing log files are appended to and the extended NCSA format is used in the GMT time zone.
To examine many more configuration options, see link:{JDURL}/org/eclipse/jetty/server/NCSARequestLog.html[NCSARequestLog.java]. To examine many more configuration options, see link:{JDURL}/org/eclipse/jetty/server/NCSARequestLog.html[NCSARequestLog.java].
@ -81,7 +80,7 @@ To examine many more configuration options, see link:{JDURL}/org/eclipse/jetty/s
[[configuring-separate-request-log-for-web-application]] [[configuring-separate-request-log-for-web-application]]
==== Configuring a Separate Request Log For a Web Application ==== Configuring a Separate Request Log For a Web Application
To configure a separate request log for a web application, add the following to the context XML file. To configure a separate request log for specific a web application, add the following to the context XML file.
[source, xml, subs="{sub-order}"] [source, xml, subs="{sub-order}"]
---- ----
@ -97,6 +96,7 @@ To configure a separate request log for a web application, add the following to
<Set name="LogTimeZone">GMT</Set> <Set name="LogTimeZone">GMT</Set>
<Set name="retainDays">90</Set> <Set name="retainDays">90</Set>
<Set name="append">true</Set> <Set name="append">true</Set>
<Set name="LogLatency">true</Set>
</New> </New>
</Set> </Set>
</New> </New>

View File

@ -95,6 +95,66 @@ include::screen-http-webapp-deploy-listconfig.adoc[]
You now have a configured and functional server, albeit with no webapps deployed. You now have a configured and functional server, albeit with no webapps deployed.
At this point you can place a webapp (war file) in the `mybase/webapps/` directory and and start Jetty. At this point you can place a webapp (war file) in the `mybase/webapps/` directory and and start Jetty.
[[startup-configuring-modules]]
==== Configuring Modules
Once a module has been enabled for the server, it can be further configured to meet your needs.
This is done by editing the associated ini file for the module.
If your server setup is using a centralized ini configuration, you will edit the `{$jetty.base}/server.ini` file.
If you have elected to manage each module within it's own ini file, you can find these files in the `{$jetty.base}/start.d` directory.
When a module is activated, a number of properties are set by default.
To view these defaults, open up the associated ini file.
Listed in the ini file is the associated module file and any properties that can be set.
Below is an example of the `requestlog.ini` file:
[source, screen, subs="{sub-order}"]
....
# ---------------------------------------
# Module: requestlog
--module=requestlog
## Logging directory (relative to $jetty.base)
# jetty.requestlog.dir=logs
## File path
# jetty.requestlog.filePath=${jetty.requestlog.dir}/yyyy_mm_dd.request.log
## Date format for rollovered files (uses SimpleDateFormat syntax)
# jetty.requestlog.filenameDateFormat=yyyy_MM_dd
## How many days to retain old log files
# jetty.requestlog.retainDays=90
## Whether to append to existing file
# jetty.requestlog.append=true
## Whether to use the extended log output
# jetty.requestlog.extended=true
## Whether to log http cookie information
# jetty.requestlog.cookies=true
## Timezone of the log entries
# jetty.requestlog.timezone=GMT
## Whether to log LogLatency
# jetty.requestlog.loglatency=false
....
The first lines name the module file being called (located in `{$jetty.home/modules}`).
Subsequent lines list properties that can be changed as well as a description for each property.
To edit a property, first un-comment the line by deleting the `#` at the start of the line, then make the change after `=` sign (such as changing a `true` value to `false`).
[[startup-disable-module]]
==== Disabling Modules
Disabling a module is an easy process.
To disable a module, comment out the `--module=` line in the associated ini file.
Deleting the ini file associated with module is another option, but may not be practical in all situations.
[[startup-listing-modules]] [[startup-listing-modules]]
==== Listing Available and Active Modules ==== Listing Available and Active Modules

View File

@ -24,6 +24,7 @@
<Set name="extended"><Property name="jetty.requestlog.extended" deprecated="requestlog.extended" default="false"/></Set> <Set name="extended"><Property name="jetty.requestlog.extended" deprecated="requestlog.extended" default="false"/></Set>
<Set name="logCookies"><Property name="jetty.requestlog.cookies" deprecated="requestlog.cookies" default="false"/></Set> <Set name="logCookies"><Property name="jetty.requestlog.cookies" deprecated="requestlog.cookies" default="false"/></Set>
<Set name="LogTimeZone"><Property name="jetty.requestlog.timezone" deprecated="requestlog.timezone" default="GMT"/></Set> <Set name="LogTimeZone"><Property name="jetty.requestlog.timezone" deprecated="requestlog.timezone" default="GMT"/></Set>
<Set name="LogLatency"><Property name="jetty.requestlog.loglatency" default="false"/></Set>
</New> </New>
</Set> </Set>
</Configure> </Configure>

View File

@ -34,3 +34,6 @@ logs/
## Timezone of the log entries ## Timezone of the log entries
# jetty.requestlog.timezone=GMT # jetty.requestlog.timezone=GMT
## Whether to log LogLatency
# jetty.requestlog.loglatency=false