You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by sd...@apache.org on 2013/02/28 09:33:37 UTC
svn commit: r1451138 - in /logging/chainsaw/trunk: pom.xml
src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java
Author: sdeboy
Date: Thu Feb 28 08:33:36 2013
New Revision: 1451138
URL: http://svn.apache.org/r1451138
Log:
Committing in-progress work to support Log4j2 fileappender configurations advertised via Multicast DNS
Modified:
logging/chainsaw/trunk/pom.xml
logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java
Modified: logging/chainsaw/trunk/pom.xml
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/pom.xml?rev=1451138&r1=1451137&r2=1451138&view=diff
==============================================================================
--- logging/chainsaw/trunk/pom.xml (original)
+++ logging/chainsaw/trunk/pom.xml Thu Feb 28 08:33:36 2013
@@ -389,10 +389,10 @@
<version>1.2.16</version>
</dependency>
<dependency>
- <groupId>jmdns</groupId>
+ <groupId>javax.jmdns</groupId>
<artifactId>jmdns</artifactId>
- <version>1.0</version>
- </dependency>
+ <version>3.4.1</version>
+ </dependency>
<dependency>
<groupId>xstream</groupId>
<artifactId>xstream</artifactId>
Modified: logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java
URL: http://svn.apache.org/viewvc/logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java?rev=1451138&r1=1451137&r2=1451138&view=diff
==============================================================================
--- logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java (original)
+++ logging/chainsaw/trunk/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java Thu Feb 28 08:33:36 2013
@@ -52,11 +52,13 @@ import org.apache.log4j.BasicConfigurato
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.chainsaw.ChainsawConstants;
+import org.apache.log4j.chainsaw.LogFilePatternLayoutBuilder;
import org.apache.log4j.chainsaw.SmallButton;
import org.apache.log4j.chainsaw.help.HelpManager;
import org.apache.log4j.chainsaw.icons.ChainsawIcons;
import org.apache.log4j.chainsaw.plugins.GUIPluginSkeleton;
import org.apache.log4j.chainsaw.prefs.SettingsManager;
+import org.apache.log4j.chainsaw.vfs.VFSLogFilePatternReceiver;
import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.net.MulticastReceiver;
import org.apache.log4j.net.SocketHubReceiver;
@@ -116,6 +118,9 @@ public class ZeroConfPlugin extends GUIP
private static final String XML_SOCKET_APPENDER_SERVICE_NAME = "_log4j_xml_tcpconnect_appender.local.";
private static final String SOCKET_APPENDER_SERVICE_NAME = "_log4j_obj_tcpconnect_appender.local.";
private static final String SOCKETHUB_APPENDER_SERVICE_NAME = "_log4j_obj_tcpaccept_appender.local.";
+ private static final String TCP_APPENDER_SERVICE_NAME = "_log4j._tcp.local.";
+ private static final String NEW_UDP_APPENDER_SERVICE_NAME = "_log4j._udp.local.";
+
private JmDNS jmDNS;
public ZeroConfPlugin() {
@@ -125,7 +130,11 @@ public class ZeroConfPlugin extends GUIP
public void shutdown() {
if (jmDNS != null) {
- jmDNS.close();
+ try {
+ jmDNS.close();
+ } catch (Exception e) {
+ LOG.error("Unable to close JMDNS", e);
+ }
}
save();
}
@@ -207,6 +216,8 @@ public class ZeroConfPlugin extends GUIP
serviceNames.add(SOCKETHUB_APPENDER_SERVICE_NAME);
serviceNames.add(UDP_APPENDER_SERVICE_NAME);
serviceNames.add(XML_SOCKET_APPENDER_SERVICE_NAME);
+ serviceNames.add(TCP_APPENDER_SERVICE_NAME);
+ serviceNames.add(NEW_UDP_APPENDER_SERVICE_NAME);
for (Iterator iter = serviceNames.iterator(); iter.hasNext();) {
String serviceName = iter.next().toString();
@@ -489,6 +500,41 @@ public class ZeroConfPlugin extends GUIP
String name = info.getName();
String decoderClass = info.getPropertyString("decoder");
+ if (NEW_UDP_APPENDER_SERVICE_NAME.equals(zone))
+ {
+ UDPReceiver receiver = new UDPReceiver();
+ receiver.setPort(port);
+ receiver.setName(name + "-receiver");
+ return receiver;
+ }
+ //FileAppender or socketappender
+ //TODO: add more checks (actual layout format, etc)
+ if (TCP_APPENDER_SERVICE_NAME.equals(zone)) {
+ //CHECK content type
+ //application/octet-stream = SocketReceiver
+ //text/plain = VFSLogFilePatternReceiver (if structured=false)
+ String contentType = info.getPropertyString("contentType").toLowerCase();
+ //won't work with log4j2, as Chainsaw depends on log4j1.x
+ if ("application/octet-stream".equals(contentType))
+ {
+ SocketReceiver receiver = new SocketReceiver();
+ receiver.setPort(port);
+ receiver.setName(name + "-receiver");
+ return receiver;
+ }
+ //this will work - regular text log files are fine
+ if ("text/plain".equals(contentType))
+ {
+ VFSLogFilePatternReceiver receiver = new VFSLogFilePatternReceiver();
+ receiver.setAppendNonMatches(true);
+ receiver.setFileURL(info.getPropertyString("fileURI"));
+ receiver.setLogFormat(LogFilePatternLayoutBuilder.getLogFormatFromPatternLayout(info.getPropertyString("format")));
+ receiver.setTimestampFormat(LogFilePatternLayoutBuilder.getTimeStampFormat(info.getPropertyString("format")));
+ receiver.setName(name + "-receiver");
+ return receiver;
+ }
+ }
+
//MulticastAppender
if (MULTICAST_APPENDER_SERVICE_NAME.equals(zone)) {
MulticastReceiver receiver = new MulticastReceiver();