Add support for a group property in LogFilePatternReceiver in order to allow logs from multiple cluster nodes to be combined in a single table by using GROUP as the event routing, and add support for the 'chainsaw' group for chainsaw-generated logs. Also updated the valid characters in the filereceiver timestampformat for java 7.
git-svn-id: https://svn.apache.org/repos/asf/logging/chainsaw/trunk@1593840 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/log4j/chainsaw/LogUI.java b/src/main/java/org/apache/log4j/chainsaw/LogUI.java
index e99760e..d9adec1 100644
--- a/src/main/java/org/apache/log4j/chainsaw/LogUI.java
+++ b/src/main/java/org/apache/log4j/chainsaw/LogUI.java
@@ -367,10 +367,10 @@
logUI.ensureChainsawAppenderHandlerAdded();
logger = LogManager.getLogger(LogUI.class);
- //set hostname & application properties which will cause Chainsaw and other apache-generated
+ //set hostname, application and group properties which will cause Chainsaw and other apache-generated
//logging events to route (by default) to a tab named 'chainsaw-log'
PropertyRewritePolicy policy = new PropertyRewritePolicy();
- policy.setProperties("hostname=chainsaw,application=log");
+ policy.setProperties("hostname=chainsaw,application=log,group=chainsaw");
RewriteAppender rewriteAppender = new RewriteAppender();
rewriteAppender.setRewritePolicy(policy);
diff --git a/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiverBeanInfo.java b/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiverBeanInfo.java
index 949965a..a99d248 100644
--- a/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiverBeanInfo.java
+++ b/src/main/java/org/apache/log4j/chainsaw/vfs/VFSLogFilePatternReceiverBeanInfo.java
@@ -46,6 +46,7 @@
"filterExpression", VFSLogFilePatternReceiver.class),
new PropertyDescriptor(
"promptForUserInfo", VFSLogFilePatternReceiver.class),
+ new PropertyDescriptor("group", VFSLogFilePatternReceiver.class),
};
} catch (Exception e) {
}
diff --git a/src/main/java/org/apache/log4j/helpers/Constants.java b/src/main/java/org/apache/log4j/helpers/Constants.java
index dbbbe59..2e181fa 100644
--- a/src/main/java/org/apache/log4j/helpers/Constants.java
+++ b/src/main/java/org/apache/log4j/helpers/Constants.java
@@ -47,6 +47,10 @@
*/
String RECEIVER_NAME_KEY = "receiver";
/**
+ * group string literal.
+ */
+ String GROUP_KEY = "group";
+ /**
* log4jid string literal.
*/
String LOG4J_ID_KEY = "log4jid";
diff --git a/src/main/java/org/apache/log4j/varia/LogFilePatternReceiver.java b/src/main/java/org/apache/log4j/varia/LogFilePatternReceiver.java
index f8f12eb..df91332 100644
--- a/src/main/java/org/apache/log4j/varia/LogFilePatternReceiver.java
+++ b/src/main/java/org/apache/log4j/varia/LogFilePatternReceiver.java
@@ -65,6 +65,7 @@
* - supports the parsing of multi-line messages and exceptions
* - 'hostname' property set to URL host (or 'file' if not available)
* - 'application' property set to URL path (or value of fileURL if not available)
+ * - 'group' property can be set to associate multiple log file receivers
*<p>
* <b>Keywords:</b><br>
* TIMESTAMP<br>
@@ -181,8 +182,9 @@
private boolean tailing;
private String filterExpression;
private long waitMillis = 2000; //default 2 seconds
+ private String group;
- private static final String VALID_DATEFORMAT_CHARS = "GyMwWDdFEaHkKhmsSzZ";
+ private static final String VALID_DATEFORMAT_CHARS = "GyYMwWDdFEuaHkKhmsSzZX";
private static final String VALID_DATEFORMAT_CHAR_PATTERN = "[" + VALID_DATEFORMAT_CHARS + "]";
private Rule expressionRule;
@@ -347,6 +349,19 @@
}
/**
+ * Mutator
+ */
+ public void setGroup(String group) { this.group = group; }
+
+
+ /**
+ * Accessor
+ *
+ * @return timestamp format
+ */
+ public String getGroup() { return group; }
+
+ /**
* Mutator. Specify a pattern from {@link java.text.SimpleDateFormat}
*
* @param timestampFormat
@@ -960,6 +975,9 @@
properties.put(Constants.HOSTNAME_KEY, host);
properties.put(Constants.APPLICATION_KEY, path);
properties.put(Constants.RECEIVER_NAME_KEY, getName());
+ if (group != null) {
+ properties.put(Constants.GROUP_KEY, group);
+ }
//all remaining entries in fieldmap are properties
properties.putAll(fieldMap);
diff --git a/src/main/java/org/apache/log4j/varia/LogFilePatternReceiverBeanInfo.java b/src/main/java/org/apache/log4j/varia/LogFilePatternReceiverBeanInfo.java
index f99f289..d7f0a8e 100644
--- a/src/main/java/org/apache/log4j/varia/LogFilePatternReceiverBeanInfo.java
+++ b/src/main/java/org/apache/log4j/varia/LogFilePatternReceiverBeanInfo.java
@@ -44,6 +44,7 @@
new PropertyDescriptor("appendNonMatches", LogFilePatternReceiver.class),
new PropertyDescriptor("customLevelDefinitions", LogFilePatternReceiver.class),
new PropertyDescriptor("useCurrentThread", LogFilePatternReceiver.class),
+ new PropertyDescriptor("group", LogFilePatternReceiver.class),
};
} catch (Exception e) {
}