Do not require a dateformat if not needed
git-svn-id: https://svn.apache.org/repos/asf/logging/chainsaw/trunk@1640746 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java b/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java
index 1d7acc0..a0fc0d8 100644
--- a/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java
+++ b/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiver.java
@@ -355,18 +355,20 @@
getLogger().warn("JSch not on classpath!", ncdfe);
}
- fileObject = fileSystemManager.resolveFile(getFileURL(), opts);
- if (fileObject.exists()) {
- reader = new InputStreamReader(fileObject.getContent().getInputStream() , "UTF-8");
- //now that we have a reader, remove additional portions of the file url (sftp passwords, etc.)
- //check to see if the name is a URLFileName..if so, set file name to not include username/pass
- if (fileObject.getName() instanceof URLFileName) {
- URLFileName urlFileName = (URLFileName) fileObject.getName();
- setHost(urlFileName.getHostName());
- setPath(urlFileName.getPath());
+ synchronized(fileSystemManager) {
+ fileObject = fileSystemManager.resolveFile(getFileURL(), opts);
+ if (fileObject.exists()) {
+ reader = new InputStreamReader(fileObject.getContent().getInputStream() , "UTF-8");
+ //now that we have a reader, remove additional portions of the file url (sftp passwords, etc.)
+ //check to see if the name is a URLFileName..if so, set file name to not include username/pass
+ if (fileObject.getName() instanceof URLFileName) {
+ URLFileName urlFileName = (URLFileName) fileObject.getName();
+ setHost(urlFileName.getHostName());
+ setPath(urlFileName.getPath());
+ }
+ } else {
+ getLogger().info(loggableFileURL + " not available - will re-attempt to load after waiting " + MISSING_FILE_RETRY_MILLIS + " millis");
}
- } else {
- getLogger().info(loggableFileURL + " not available - will re-attempt to load after waiting " + MISSING_FILE_RETRY_MILLIS + " millis");
}
} catch (FileSystemException fse) {
getLogger().info(loggableFileURL + " not available - may be due to incorrect credentials, but will re-attempt to load after waiting " + MISSING_FILE_RETRY_MILLIS + " millis", fse);
@@ -404,12 +406,15 @@
}
//fileobject was created above, release it and construct a new one
- if (fileObject != null) {
- fileObject.getFileSystem().getFileSystemManager().closeFileSystem(fileObject.getFileSystem());
- fileObject.close();
- fileObject = null;
+ synchronized(fileSystemManager) {
+ if (fileObject != null) {
+ fileObject.getFileSystem().getFileSystemManager().closeFileSystem(fileObject.getFileSystem());
+ fileObject.close();
+ fileObject = null;
+ }
+
+ fileObject = fileSystemManager.resolveFile(getFileURL(), opts);
}
- fileObject = fileSystemManager.resolveFile(getFileURL(), opts);
//file may not exist..
boolean fileLarger = false;
diff --git a/src/main/java/org/apache/log4j/varia/LogFilePatternReceiver.java b/src/main/java/org/apache/log4j/varia/LogFilePatternReceiver.java
index 3a39508..1c2e30c 100644
--- a/src/main/java/org/apache/log4j/varia/LogFilePatternReceiver.java
+++ b/src/main/java/org/apache/log4j/varia/LogFilePatternReceiver.java
@@ -173,7 +173,7 @@
private final String[] emptyException = new String[] { "" };
private SimpleDateFormat dateFormat;
- private String timestampFormat = "yyyy-MM-d HH:mm:ss,SSS";
+ private String timestampFormat;
private String logFormat;
private String customLevelDefinitions;
private String fileURL;
@@ -357,7 +357,7 @@
/**
* Accessor
*
- * @return timestamp format
+ * @return group
*/
public String getGroup() { return group; }
@@ -481,7 +481,7 @@
if (currentMap.size() == 0) {
if (additionalLines.size() > 0) {
for (Iterator iter = additionalLines.iterator();iter.hasNext();) {
- getLogger().info("found non-matching line: " + iter.next());
+ getLogger().debug("found non-matching line: " + iter.next());
}
}
additionalLines.clear();
@@ -625,11 +625,14 @@
*/
private String convertTimestamp() {
//some locales (for example, French) generate timestamp text with characters not included in \w -
- // now using \S (all non-whitespace characters) instead of /w
- String result = timestampFormat.replaceAll(Pattern.quote("+"), "[+]");
- result = result.replaceAll(VALID_DATEFORMAT_CHAR_PATTERN, "\\\\S+");
- //make sure dots in timestamp are escaped
- result = result.replaceAll(Pattern.quote("."), "\\\\.");
+ // now using \S (all non-whitespace characters) instead of /w
+ String result = "";
+ if (timestampFormat != null) {
+ result = timestampFormat.replaceAll(Pattern.quote("+"), "[+]");
+ result = result.replaceAll(VALID_DATEFORMAT_CHAR_PATTERN, "\\\\S+");
+ //make sure dots in timestamp are escaped
+ result = result.replaceAll(Pattern.quote("."), "\\\\.");
+ }
return result;
}
@@ -929,7 +932,7 @@
e.printStackTrace();
}
}
- //use current time if timestamp not parseable
+ //use current time if timestamp not parseable/dateformat not specified
if (timeStamp == 0L) {
timeStamp = System.currentTimeMillis();
}