in src/main/java/org/apache/log4j/varia/LogFilePatternReceiverFactory.java [55:142]
public String getReceiverDocumentation() {
return "<html>LogFilePatternReceiver can parse and tail log files, converting entries into\n" +
"LoggingEvents. If the file doesn't exist when the receiver is initialized, the\n" +
"receiver will look for the file once every 10 seconds.\n" +
"<p>\n" +
"This receiver relies on java.util.regex features to perform the parsing of text in the\n" +
"log file, however the only regular expression field explicitly supported is\n" +
" * a glob-style wildcard used to ignore fields in the log file if needed. All other\n" +
"fields are parsed by using the supplied keywords.\n" +
"<p>\n" +
"<b>Features:</b><br>\n" +
"- specify the URL of the log file to be processed<br>\n" +
"- specify the timestamp format in the file (if one exists, using patterns from {@link java.text.SimpleDateFormat})<br>\n" +
"- specify the pattern (logFormat) used in the log file using keywords, a wildcard character (*) and fixed text<br>\n" +
"- 'tail' the file (allows the contents of the file to be continually read and new events processed)<br>\n" +
"- supports the parsing of multi-line messages and exceptions\n" +
"- 'hostname' property set to URL host (or 'file' if not available)\n" +
"- 'application' property set to URL path (or value of fileURL if not available)\n" +
"- 'group' property can be set to associate multiple log file receivers\n" +
"<p>\n" +
"<b>Keywords:</b><br>\n" +
"TIMESTAMP<br>\n" +
"LOGGER<br>\n" +
"LEVEL<br>\n" +
"THREAD<br>\n" +
"CLASS<br>\n" +
"FILE<br>\n" +
"LINE<br>\n" +
"METHOD<br>\n" +
"RELATIVETIME<br>\n" +
"MESSAGE<br>\n" +
"NDC<br>\n" +
"PROP(key)<br>\n" +
"(NL)<br>\n" +
"<p>\n" +
"(NL) represents a new line embedded in the log format, supporting log formats whose fields span multiple lines\n" +
"<p>\n" +
"Use a * to ignore portions of the log format that should be ignored\n" +
"<p>\n" +
"Example:<br>\n" +
"If your file's patternlayout is this:<br>\n" +
"<b>%d %-5p [%t] %C{2} (%F:%L) - %m%n</b>\n" +
"<p>\n" +
"specify this as the log format:<br>\n" +
"<b>TIMESTAMP LEVEL [THREAD] CLASS (FILE:LINE) - MESSAGE</b>\n" +
"<p>\n" +
"To define a PROPERTY field, use PROP(key)\n" +
"<p>\n" +
"Example:<br>\n" +
"If you used the RELATIVETIME pattern layout character in the file,\n" +
"you can use PROP(RELATIVETIME) in the logFormat definition to assign\n" +
"the RELATIVETIME field as a property on the event.\n" +
"<p>\n" +
"If your file's patternlayout is this:<br>\n" +
"<b>%r [%t] %-5p %c %x - %m%n</b>\n" +
"<p>\n" +
"specify this as the log format:<br>\n" +
"<b>PROP(RELATIVETIME) [THREAD] LEVEL LOGGER * - MESSAGE</b>\n" +
"<p>\n" +
"Note the * - it can be used to ignore a single word or sequence of words in the log file\n" +
"(in order for the wildcard to ignore a sequence of words, the text being ignored must be\n" +
"followed by some delimiter, like '-' or '[') - ndc is being ignored in the following example.\n" +
"<p>\n" +
"Assign a filterExpression in order to only process events which match a filter.\n" +
"If a filterExpression is not assigned, all events are processed.\n" +
"<p>\n" +
"<b>Limitations:</b><br>\n" +
"- no support for the single-line version of throwable supported by patternlayout<br>\n" +
"(this version of throwable will be included as the last line of the message)<br>\n" +
"- the relativetime patternLayout character must be set as a property: PROP(RELATIVETIME)<br>\n" +
"- messages should appear as the last field of the logFormat because the variability in message content<br>\n" +
"- exceptions are converted if the exception stack trace (other than the first line of the exception)<br>\n" +
"is stored in the log file with a tab followed by the word 'at' as the first characters in the line<br>\n" +
"- tailing may fail if the file rolls over.\n" +
"<p>\n" +
"<b>Example receiver configuration settings</b> (add these as params, specifying a LogFilePatternReceiver 'plugin'):<br>\n" +
"param: \"timestampFormat\" value=\"yyyy-MM-d HH:mm:ss,SSS\"<br>\n" +
"param: \"logFormat\" value=\"PROP(RELATIVETIME) [THREAD] LEVEL LOGGER * - MESSAGE\"<br>\n" +
"param: \"fileURL\" value=\"file:///c:/events.log\"<br>\n" +
"param: \"tailing\" value=\"true\"\n" +
"<p>\n" +
"This configuration will be able to process these sample events:<br>\n" +
"710 [ Thread-0] DEBUG first.logger first - <test> <test2>something here</test2> <test3 blah=something/> <test4> <test5>something else</test5> </test4></test><br>\n" +
"880 [ Thread-2] DEBUG first.logger third - <test> <test2>something here</test2> <test3 blah=something/> <test4> <test5>something else</test5> </test4></test><br>\n" +
"880 [ Thread-0] INFO first.logger first - infomsg-0<br>\n" +
"java.lang.Exception: someexception-first<br>\n" +
"at Generator2.run(Generator2.java:102)<br>";
}