Class VFSLogFilePatternReceiver
- java.lang.Object
-
- org.apache.log4j.spi.ComponentBase
-
- org.apache.log4j.plugins.PluginSkeleton
-
- org.apache.log4j.plugins.Receiver
-
- org.apache.log4j.varia.LogFilePatternReceiver
-
- org.apache.log4j.chainsaw.vfs.VFSLogFilePatternReceiver
-
- All Implemented Interfaces:
VisualReceiver
,Plugin
,Component
,org.apache.log4j.spi.OptionHandler
,Thresholdable
public class VFSLogFilePatternReceiver extends LogFilePatternReceiver implements VisualReceiver
A VFS-enabled version of org.apache.log4j.varia.LogFilePatternReceiver.VFSLogFilePatternReceiver can parse and tail log files, converting entries into LoggingEvents. If the file doesn't exist when the receiver is initialized, the receiver will look for the file once every 10 seconds.
See the Chainsaw page (http://logging.apache.org/log4j/docs/chainsaw.html) for information on how to set up Chainsaw with VFS.
See http://jakarta.apache.org/commons/vfs/filesystems.html for a list of VFS-supported file systems and the URIs needed to access the file systems.
Because some VFS file systems allow you to provide username/password, this receiver provides an optional GUI dialog for entering the username/password fields instead of requiring you to hard code usernames and passwords into the URI.
If the 'promptForUserInfo' param is set to true (default is false), the receiver will wait for a call to 'setContainer', and then display a username/password dialog.
If you are using this receiver without a GUI, don't set promptForUserInfo to true - it will block indefinitely waiting for a visual component.
If the 'promptForUserInfo' param is set to true, the fileURL should -leave out- the username/password portion of the VFS-supported URI. Examples:
An sftp URI that would be used with promptForUserInfo=true: sftp://192.168.1.100:22/home/thisuser/logfile.txt
An sftp URI that would be used with promptForUserInfo=false: sftp://username:password@192.168.1.100:22/home/thisuser/logfile.txt
This receiver relies on java.util.regex features to perform the parsing of text in the log file, however the only regular expression field explicitly supported is a glob-style wildcard used to ignore fields in the log file if needed. All other fields are parsed by using the supplied keywords.
Features:
- specify the URL of the log file to be processed
- specify the timestamp format in the file (if one exists, using patterns fromSimpleDateFormat
)
- specify the pattern (logFormat) used in the log file using keywords, a wildcard character (*) and fixed text
- 'tail' the file (allows the contents of the file to be continually read and new events processed)
- supports the parsing of multi-line messages and exceptions - to accessKeywords:
TIMESTAMP
LOGGER
LEVEL
THREAD
CLASS
FILE
LINE
METHOD
RELATIVETIME
MESSAGE
NDC
PROP(key)
Use a * to ignore portions of the log format that should be ignored
Example:
If your file's patternlayout is this:
%d %-5p [%t] %C{2} (%F:%L) - %m%nspecify this as the log format:
TIMESTAMP LEVEL [THREAD] CLASS (FILE:LINE) - MESSAGETo define a PROPERTY field, use PROP(key)
Example:
If you used the RELATIVETIME pattern layout character in the file, you can use PROP(RELATIVETIME) in the logFormat definition to assign the RELATIVETIME field as a property on the event.If your file's patternlayout is this:
%r [%t] %-5p %c %x - %m%nspecify this as the log format:
PROP(RELATIVETIME) [THREAD] LEVEL LOGGER * - MESSAGENote the * - it can be used to ignore a single word or sequence of words in the log file (in order for the wildcard to ignore a sequence of words, the text being ignored must be followed by some delimiter, like '-' or '[') - ndc is being ignored in this example.
Assign a filterExpression in order to only process events which match a filter. If a filterExpression is not assigned, all events are processed.
Limitations:
- no support for the single-line version of throwable supported by patternlayout
(this version of throwable will be included as the last line of the message)
- the relativetime patternLayout character must be set as a property: PROP(RELATIVETIME)
- messages should appear as the last field of the logFormat because the variability in message content
- exceptions are converted if the exception stack trace (other than the first line of the exception)
is stored in the log file with a tab followed by the word 'at' as the first characters in the line
- tailing may fail if the file rolls over.Example receiver configuration settings (add these as params, specifying a LogFilePatternReceiver 'plugin'):
param: "timestampFormat" value="yyyy-MM-d HH:mm:ss,SSS"
param: "logFormat" value="RELATIVETIME [THREAD] LEVEL LOGGER * - MESSAGE"
param: "fileURL" value="file:///c:/events.log"
param: "tailing" value="true" param: "promptForUserInfo" value="false"This configuration will be able to process these sample events:
710 [ Thread-0] DEBUG first.logger first - <test> <test2>something here</test2> <test3 blah=something/> <test4> <test5>something else</test5> </test4></test>
880 [ Thread-2] DEBUG first.logger third - <test> <test2>something here</test2> <test3 blah=something/> <test4> <test5>something else</test5> </test4></test>
880 [ Thread-0] INFO first.logger first - infomsg-0
java.lang.Exception: someexception-first
at Generator2.run(Generator2.java:102)- Author:
- Scott Deboy
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
VFSLogFilePatternReceiver.UserNamePasswordDialog
-
Field Summary
-
Fields inherited from class org.apache.log4j.varia.LogFilePatternReceiver
MISSING_FILE_RETRY_MILLIS
-
Fields inherited from class org.apache.log4j.plugins.Receiver
thresholdLevel
-
Fields inherited from class org.apache.log4j.plugins.PluginSkeleton
active, name
-
Fields inherited from class org.apache.log4j.spi.ComponentBase
repository
-
-
Constructor Summary
Constructors Constructor Description VFSLogFilePatternReceiver()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
activateOptions()
Read and process the log file.boolean
isAutoReconnect()
Accessorboolean
isPromptForUserInfo()
void
setAutoReconnect(boolean autoReconnect)
Mutatorvoid
setContainer(Container container)
Implementation of VisualReceiver interface - allows this receiver to provide a username/password dialog.void
setPromptForUserInfo(boolean promptForUserInfo)
If set to true, will cause the receiver to block indefinitely until 'setContainer' has been called, at which point a username/password dialog will appear.void
shutdown()
Close the reader.-
Methods inherited from class org.apache.log4j.varia.LogFilePatternReceiver
createPattern, getCustomLevelDefinitions, getFileURL, getFilterExpression, getGroup, getLogFormat, getPath, getTimestampFormat, getWaitMillis, initialize, isAppendNonMatches, isTailing, isUseCurrentThread, process, setAppendNonMatches, setCustomLevelDefinitions, setFileURL, setFilterExpression, setGroup, setHost, setLogFormat, setPath, setTailing, setTimestampFormat, setUseCurrentThread, setWaitMillis
-
Methods inherited from class org.apache.log4j.plugins.Receiver
doPost, getThreshold, isAsSevereAsThreshold, setThreshold
-
Methods inherited from class org.apache.log4j.plugins.PluginSkeleton
addPropertyChangeListener, addPropertyChangeListener, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getLoggerRepository, getName, isActive, isEquivalent, removePropertyChangeListener, removePropertyChangeListener, setLoggerRepository, setName
-
Methods inherited from class org.apache.log4j.spi.ComponentBase
getLogger, getNonFloodingLogger, resetErrorCount
-
-
-
-
Method Detail
-
shutdown
public void shutdown()
Description copied from class:LogFilePatternReceiver
Close the reader.- Specified by:
shutdown
in interfacePlugin
- Overrides:
shutdown
in classLogFilePatternReceiver
-
setPromptForUserInfo
public void setPromptForUserInfo(boolean promptForUserInfo)
If set to true, will cause the receiver to block indefinitely until 'setContainer' has been called, at which point a username/password dialog will appear.- Parameters:
promptForUserInfo
-
-
isPromptForUserInfo
public boolean isPromptForUserInfo()
-
isAutoReconnect
public boolean isAutoReconnect()
Accessor- Returns:
-
setAutoReconnect
public void setAutoReconnect(boolean autoReconnect)
Mutator- Parameters:
autoReconnect
-
-
setContainer
public void setContainer(Container container)
Implementation of VisualReceiver interface - allows this receiver to provide a username/password dialog.- Specified by:
setContainer
in interfaceVisualReceiver
-
activateOptions
public void activateOptions()
Read and process the log file.- Specified by:
activateOptions
in interfaceorg.apache.log4j.spi.OptionHandler
- Overrides:
activateOptions
in classLogFilePatternReceiver
-
-