Committing in-progress work to support Log4j2 fileappender configurations advertised via Multicast DNS
Project: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/commit/647f6918 Tree: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/tree/647f6918 Diff: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/diff/647f6918 Branch: refs/heads/master Commit: 647f6918200f2f0735782d21af31945c634fa336 Parents: 7e8c583 Author: Scott Deboy <[email protected]> Authored: Thu Feb 28 08:33:36 2013 +0000 Committer: Scott Deboy <[email protected]> Committed: Thu Feb 28 08:33:36 2013 +0000 ---------------------------------------------------------------------- pom.xml | 6 +-- .../log4j/chainsaw/zeroconf/ZeroConfPlugin.java | 48 +++++++++++++++++++- 2 files changed, 50 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/647f6918/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 182eab5..29ea0ba 100644 --- a/pom.xml +++ b/pom.xml @@ -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> http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/647f6918/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java b/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java index 369e9d8..9fedd69 100644 --- a/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java +++ b/src/main/java/org/apache/log4j/chainsaw/zeroconf/ZeroConfPlugin.java @@ -52,11 +52,13 @@ import org.apache.log4j.BasicConfigurator; 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 GUIPluginSkeleton { 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 GUIPluginSkeleton { 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 GUIPluginSkeleton { 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 GUIPluginSkeleton { 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();
