Author: carnold
Date: Thu Apr 26 12:46:58 2007
New Revision: 532842
URL: http://svn.apache.org/viewvc?view=rev&rev=532842
Log:
Bug 21796: SocketAppender doesn't fall back with FallbackErrorHandler
Added:
logging/log4j/branches/v1_2-branch/tests/input/xml/SocketAppenderTestConfig.xml
logging/log4j/branches/v1_2-branch/tests/src/java/org/apache/log4j/net/SocketAppenderTest.java
Modified:
logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/net/SocketAppender.java
logging/log4j/branches/v1_2-branch/tests/build.xml
Modified:
logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/net/SocketAppender.java
URL:
http://svn.apache.org/viewvc/logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/net/SocketAppender.java?view=diff&rev=532842&r1=532841&r2=532842
==============================================================================
---
logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/net/SocketAppender.java
(original)
+++
logging/log4j/branches/v1_2-branch/src/java/org/apache/log4j/net/SocketAppender.java
Thu Apr 26 12:46:58 2007
@@ -26,6 +26,7 @@
import java.io.ObjectOutputStream;
import org.apache.log4j.helpers.LogLog;
+import org.apache.log4j.spi.ErrorCode;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.AppenderSkeleton;
@@ -210,6 +211,9 @@
if(reconnectionDelay > 0) {
msg += " We will try again later.";
fireConnector(); // fire the connector thread
+ } else {
+ msg += " We are not retrying.";
+ errorHandler.error(msg, e, ErrorCode.GENERIC_FAILURE);
}
LogLog.error(msg);
}
@@ -246,6 +250,9 @@
LogLog.warn("Detected problem with connection: "+e);
if(reconnectionDelay > 0) {
fireConnector();
+ } else {
+ errorHandler.error("Detected problem with connection, not
reconnecting.", e,
+ ErrorCode.GENERIC_FAILURE);
}
}
}
Modified: logging/log4j/branches/v1_2-branch/tests/build.xml
URL:
http://svn.apache.org/viewvc/logging/log4j/branches/v1_2-branch/tests/build.xml?view=diff&rev=532842&r1=532841&r2=532842
==============================================================================
--- logging/log4j/branches/v1_2-branch/tests/build.xml (original)
+++ logging/log4j/branches/v1_2-branch/tests/build.xml Thu Apr 26 12:46:58 2007
@@ -154,7 +154,8 @@
OptionConverter, BoundedFIFO,
CyclicBuffer, OR,
LevelMatchFilter, PatternParser,
- PatternLayout, RFA, ERFA, DRFA,
NTEventLogAppender, Syslog"/>
+ PatternLayout, RFA, ERFA, DRFA,
+
NTEventLogAppender, Syslog, Socket"/>
<!-- ================================================================= -->
<!-- Longer unit tests -->
@@ -414,6 +415,15 @@
<test name="org.apache.log4j.nt.NTEventLogAppenderTest" />
</junit>
</target>
+
+ <target name="Socket" depends="build">
+ <junit printsummary="yes" fork="yes" haltonfailure="${haltonfailure}">
+ <classpath refid="tests.classpath"/>
+ <formatter type="plain" usefile="false"/>
+ <test name="org.apache.log4j.net.SocketAppenderTest" />
+ </junit>
+ </target>
+
<!-- ================================================================= -->
<!-- ========================= Very long Tests ======================= -->
Added:
logging/log4j/branches/v1_2-branch/tests/input/xml/SocketAppenderTestConfig.xml
URL:
http://svn.apache.org/viewvc/logging/log4j/branches/v1_2-branch/tests/input/xml/SocketAppenderTestConfig.xml?view=auto&rev=532842
==============================================================================
---
logging/log4j/branches/v1_2-branch/tests/input/xml/SocketAppenderTestConfig.xml
(added)
+++
logging/log4j/branches/v1_2-branch/tests/input/xml/SocketAppenderTestConfig.xml
Thu Apr 26 12:46:58 2007
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<log4j:configuration debug="true"
+xmlns:log4j='http://jakarta.apache.org/log4j/'>
+
+
+ <!-- primary appender -->
+ <appender name="remote" class="org.apache.log4j.net.SocketAppender">
+
+ <!-- fallback on error -->
+ <errorHandler
+class="org.apache.log4j.varia.FallbackErrorHandler">
+ <logger-ref
ref="org.apache.log4j.net.SocketAppenderTest"/>
+ <appender-ref ref="lastOnly"/>
+ </errorHandler>
+
+ <param name="RemoteHost" value="localhost"/>
+ <param name="Port" value="8189"/>
+ <param name="ReconnectionDelay" value="0"/>
+ </appender>
+
+
+ <!-- secondary appender -->
+ <appender name="lastOnly"
+class="org.apache.log4j.net.SocketAppenderTest$LastOnlyAppender"></appender>
+
+
+ <!-- logger -->
+ <logger name="SocketAppenderTest">
+ <appender-ref ref="remote"/>
+ </logger>
+
+
+ <!-- logger
+ dummy, so i can have early access to lastOnly appender instance
+ -->
+ <logger name="org.apache.log4j.net.SocketAppenderTestDummy">
+ <appender-ref ref="lastOnly"/>
+ </logger>
+
+
+</log4j:configuration>
+
Added:
logging/log4j/branches/v1_2-branch/tests/src/java/org/apache/log4j/net/SocketAppenderTest.java
URL:
http://svn.apache.org/viewvc/logging/log4j/branches/v1_2-branch/tests/src/java/org/apache/log4j/net/SocketAppenderTest.java?view=auto&rev=532842
==============================================================================
---
logging/log4j/branches/v1_2-branch/tests/src/java/org/apache/log4j/net/SocketAppenderTest.java
(added)
+++
logging/log4j/branches/v1_2-branch/tests/src/java/org/apache/log4j/net/SocketAppenderTest.java
Thu Apr 26 12:46:58 2007
@@ -0,0 +1,97 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.log4j.net;
+
+import junit.framework.TestCase;
+
+import org.apache.log4j.Appender;
+import org.apache.log4j.AppenderSkeleton;
+import org.apache.log4j.Logger;
+import org.apache.log4j.spi.LoggingEvent;
+import org.apache.log4j.xml.DOMConfigurator;
+
+public class SocketAppenderTest extends TestCase {
+
+ /**
+ * Create new instance.
+ */
+ public SocketAppenderTest(final String testName) {
+ super(testName);
+ }
+
+ /* JUnit's setUp and tearDown */
+
+ protected void setUp() {
+ DOMConfigurator.configure("input/xml/SocketAppenderTestConfig.xml");
+
+ logger = Logger.getLogger(SocketAppenderTest.class);
+ primary = logger.getAppender("remote");
+ secondary = (LastOnlyAppender) Logger.getLogger(
+
"org.apache.log4j.net.SocketAppenderTestDummy").getAppender("lastOnly");
+ }
+
+ protected void tearDown() {
+ }
+
+ /* Tests */
+
+ public void testFallbackErrorHandlerWhenStarting() {
+ String msg = "testFallbackErrorHandlerWhenStarting";
+ logger.debug(msg);
+
+ // above debug log will fail and shoul be redirected to secondary
appender
+ assertEquals("SocketAppender with FallbackErrorHandler", msg,
secondary.getLastMessage());
+ }
+
+ /* Fields */
+
+ private static Logger logger;
+ private static Appender primary;
+ private static LastOnlyAppender secondary;
+
+ /* Inner classes */
+
+ /**
+ * Inner-class For debugging purposes only Saves last LoggerEvent
+ */
+ static public class LastOnlyAppender extends AppenderSkeleton {
+ protected void append(LoggingEvent event) {
+ this.lastEvent = event;
+ }
+
+ public boolean requiresLayout() {
+ return false;
+ }
+
+ public void close() {
+ this.closed = true;
+ }
+
+ /**
+ * @return last appended LoggingEvent's message
+ */
+ public String getLastMessage() {
+ if (this.lastEvent != null)
+ return this.lastEvent.getMessage().toString();
+ else
+ return "";
+ }
+
+ private LoggingEvent lastEvent;
+ };
+
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]