[ https://issues.apache.org/jira/browse/LOG4J2-878?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
saran sundar updated LOG4J2-878: -------------------------------- Description: OS: Windows Software platform: j2ee, spring, webservices, junit, log4j2 I want to make sure that the failover configuration works as expected. I configured failover appender with two rolling file appenders. Primary rolling file appender configured to a shared folder in different computer. Secondary file appender pointing to my local file system. Once after i ran the junit program and the first debug statement printed, i removed the share location from the other computer in the network for the primary appender. As expected next debug statements ( i left thread.sleep(30000) in between each debug statement in junit program) were redirect to secondary file appender. However at the time of retry by failover appender , it tries to reconnect to the primary location which is up now (enabled the share location in different computer), but received following error.. 2014-10-21 10:34:11,463 ERROR Unable to write to stream //L-Computer1/test/logs/primary.log for appender primeCompressedDaily 2014-10-21 10:34:11,463 ERROR An exception occurred processing Appender primeCompressedDaily org.apache.logging.log4j.core.appender.AppenderLoggingException: Error flushing stream //L-Computer1/test/logs/primary.log at org.apache.logging.log4j.core.appender.OutputStreamManager.flush(OutputStreamManager.java:159) at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:108) at org.apache.logging.log4j.core.appender.RollingFileAppender.append(RollingFileAppender.java:86) at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:97) at org.apache.logging.log4j.core.appender.FailoverAppender.callAppender(FailoverAppender.java:117) at org.apache.logging.log4j.core.appender.FailoverAppender.append(FailoverAppender.java:109) at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:97) at org.apache.logging.log4j.core.appender.AsyncAppender$AsyncThread.callAppenders(AsyncAppender.java:288) at org.apache.logging.log4j.core.appender.AsyncAppender$AsyncThread.run(AsyncAppender.java:240) Caused by: java.io.IOException: The specified network name is no longer available at java.io.FileOutputStream.writeBytes(Native Method) at java.io.FileOutputStream.write(FileOutputStream.java:318) at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) at org.apache.logging.log4j.core.appender.OutputStreamManager.flush(OutputStreamManager.java:156) ... 8 more 2014-10-21 10:39:31,484 ERROR Unable to write to stream //L-Computer1/test/logs/primary.log for appender primeCompressedDaily log4j2.xml entries is given below, <?xml version="1.0" encoding="UTF-8"?> <!-- set status below to FATAL to suppress a bug in log4j2: "ERROR appender Failover has no parameter that matches element Failovers" --> <!-- other working value for status is "warn" - --> <Configuration status="warn" name="log4j2" packages="com.ims.log4j"> <Appenders> <Console name="stdout" target="SYSTEM_OUT" ignoreExceptions="false"> <PatternLayout pattern="%d{ABSOLUTE} %1p %X{userinfo} %c{1}:%L - %m%n"/> </Console> <RollingFile name="compressedDaily" fileName="c:/installed/Tomcat-7.0.12/logs/secondary.log" filePattern="c:/installed/Tomcat-7.0.12/logs/secondary.log.%d{yyyy-MM-dd}.gz" ignoreExceptions="false"> <PatternLayout> <Pattern>%d{ABSOLUTE} %1p %X{userinfo} %c{1}:%L - %m%n</Pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy/> </Policies> </RollingFile> <RollingFile name="primeCompressedDaily" fileName="//L-Computer1/test/logs/primary.log" filePattern="//L-Computer1/test/logs/primary.log.%d{yyyy-MM-dd}.gz" ignoreExceptions="false" > <PatternLayout> <Pattern>%d{ABSOLUTE} %1p %X{userinfo} %c{1}:%L - %m%n</Pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy/> </Policies> </RollingFile> <Failover name="FailoverAppender" primary="primeCompressedDaily" retryInterval="61" ignoreExceptions="false"> <Failovers> <AppenderRef ref="compressedDaily" /> </Failovers> </Failover> <Async name="asyncCompressed"> <AppenderRef ref="FailoverAppender" /> </Async> <Async name="asyncStdout"> <AppenderRef ref="stdout" /> </Async> </Appenders> <Loggers> <Root level="trace"> <AppenderRef ref="asyncCompressed" level="trace"/> <AppenderRef ref="asyncStdout" level="trace"/> </Root> <Logger name="com.ims" level="debug" includeLocation="true" additivity="false"> <AppenderRef ref="asyncCompressed"/> </Logger> <Logger name="org.apache.cxf.interceptor.LoggingInInterceptor" level="info" includeLocation="true" additivity="false"> <AppenderRef ref="asyncCompressed"/> </Logger> <Logger name="org.apache.cxf.interceptor.LoggingOutInterceptor" level="info" includeLocation="true" additivity="false"> <AppenderRef ref="asyncCompressed"/> </Logger> <Logger name="org.hibernate" level="error" includeLocation="true" additivity="false"> <AppenderRef ref="asyncCompressed"/> </Logger> <Logger name="test.escalation" level="debug" includeLocation="true" additivity="false"> <AppenderRef ref="asyncCompressed"/> </Logger> <Logger name="org.apache.cxf" level="info" includeLocation="true" additivity="false"> <AppenderRef ref="asyncCompressed"/> </Logger> </Loggers> </Configuration> Junit method @Test public void log4jTest() throws Exception { System.out.println("log4j2 test"); Thread.sleep(30000); log.error("debug-log4j2 test*1"); Thread.sleep(60000); log.error("debug-log4j2 test*2"); Thread.sleep(30000); System.out.println("debug-log4j2 test*3"); Thread.sleep(70000); log.info("debug-log4j2 test*4"); Thread.sleep(30000); log.debug("debug-log4j2 test*5"); Thread.sleep(30000); log.debug("debug-log4j2 test*6"); Thread.sleep(30000); log.debug("debug-log4j2 test*7"); Thread.sleep(30000); log.debug("debug-log4j2 test*8"); Thread.sleep(290000); log.debug("debug-log4j2 test*9"); Thread.sleep(30000); log.debug("debug-log4j2 test*10"); System.out.println("debug-log4j2 test*6"); } PS Please forgive if I wasn't narrate the problem properly. any quick help in this issue would be highly appreciated. was: OS: Windows Software platform: j2ee, spring, webservices, junit, log4j2 I want to make sure that the failover configuration works as expected. I configured failover appender with two rolling file appenders. Primary rolling file appender configured to a shared folder in different computer. Secondary file appender pointing to my local file system. Once after i ran the junit program and the first debug statement printed, i removed the share location from the other computer in the network for the primary appender. As expected next debug statements ( i left thread.sleep(30000) in between each debug statement in junit program) were redirect to secondary file appender. However at the time of retry by failover appender , it tries to reconnect to the primary location which is up now (enabled the share location in different computer), but received following error.. 2014-10-21 10:34:11,463 ERROR Unable to write to stream //L-Computer1/test/logs/primary.log for appender primeCompressedDaily 2014-10-21 10:34:11,463 ERROR An exception occurred processing Appender primeCompressedDaily org.apache.logging.log4j.core.appender.AppenderLoggingException: Error flushing stream //L-Computer1/test/logs/primary.log at org.apache.logging.log4j.core.appender.OutputStreamManager.flush(OutputStreamManager.java:159) at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:108) at org.apache.logging.log4j.core.appender.RollingFileAppender.append(RollingFileAppender.java:86) at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:97) at org.apache.logging.log4j.core.appender.FailoverAppender.callAppender(FailoverAppender.java:117) at org.apache.logging.log4j.core.appender.FailoverAppender.append(FailoverAppender.java:109) at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:97) at org.apache.logging.log4j.core.appender.AsyncAppender$AsyncThread.callAppenders(AsyncAppender.java:288) at org.apache.logging.log4j.core.appender.AsyncAppender$AsyncThread.run(AsyncAppender.java:240) Caused by: java.io.IOException: The specified network name is no longer available at java.io.FileOutputStream.writeBytes(Native Method) at java.io.FileOutputStream.write(FileOutputStream.java:318) at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) at org.apache.logging.log4j.core.appender.OutputStreamManager.flush(OutputStreamManager.java:156) ... 8 more 2014-10-21 10:39:31,484 ERROR Unable to write to stream //L-Computer1/test/logs/primary.log for appender primeCompressedDaily log4j2.xml entries is given below, <?xml version="1.0" encoding="UTF-8"?> <!-- set status below to FATAL to suppress a bug in log4j2: "ERROR appender Failover has no parameter that matches element Failovers" --> <!-- other working value for status is "warn" - --> <Configuration status="warn" name="log4j2" packages="com.ims.log4j"> <Appenders> <Console name="stdout" target="SYSTEM_OUT" ignoreExceptions="false"> <PatternLayout pattern="%d{ABSOLUTE} %1p %X{userinfo} %c{1}:%L - %m%n"/> </Console> <RollingFile name="compressedDaily" fileName="c:/installed/Tomcat-7.0.12/logs/secondary.log" filePattern="c:/installed/Tomcat-7.0.12/logs/secondary.log.%d{yyyy-MM-dd}.gz" ignoreExceptions="false"> <PatternLayout> <Pattern>%d{ABSOLUTE} %1p %X{userinfo} %c{1}:%L - %m%n</Pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy/> </Policies> </RollingFile> <RollingFile name="primeCompressedDaily" fileName="//L-Computer1/test/logs/primary.log" filePattern="//L-Computer1/test/logs/primary.log.%d{yyyy-MM-dd}.gz" ignoreExceptions="false" > <PatternLayout> <Pattern>%d{ABSOLUTE} %1p %X{userinfo} %c{1}:%L - %m%n</Pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy/> </Policies> </RollingFile> <Failover name="FailoverAppender" primary="primeCompressedDaily" retryInterval="61" ignoreExceptions="false"> <Failovers> <AppenderRef ref="compressedDaily" /> </Failovers> </Failover> <Async name="asyncCompressed"> <AppenderRef ref="FailoverAppender" /> </Async> <Async name="asyncStdout"> <AppenderRef ref="stdout" /> </Async> </Appenders> <Loggers> <Root level="trace"> <AppenderRef ref="asyncCompressed" level="trace"/> <AppenderRef ref="asyncStdout" level="trace"/> </Root> <Logger name="com.ims" level="debug" includeLocation="true" additivity="false"> <AppenderRef ref="asyncCompressed"/> </Logger> <Logger name="org.apache.cxf.interceptor.LoggingInInterceptor" level="info" includeLocation="true" additivity="false"> <AppenderRef ref="asyncCompressed"/> </Logger> <Logger name="org.apache.cxf.interceptor.LoggingOutInterceptor" level="info" includeLocation="true" additivity="false"> <AppenderRef ref="asyncCompressed"/> </Logger> <Logger name="org.hibernate" level="error" includeLocation="true" additivity="false"> <AppenderRef ref="asyncCompressed"/> </Logger> <Logger name="epraxis.escalation" level="debug" includeLocation="true" additivity="false"> <AppenderRef ref="asyncCompressed"/> </Logger> <Logger name="org.apache.cxf" level="info" includeLocation="true" additivity="false"> <AppenderRef ref="asyncCompressed"/> </Logger> </Loggers> </Configuration> Junit method @Test public void log4jTest() throws Exception { System.out.println("log4j2 test"); Thread.sleep(30000); log.error("debug-log4j2 test*1"); Thread.sleep(60000); log.error("debug-log4j2 test*2"); Thread.sleep(30000); System.out.println("debug-log4j2 test*3"); Thread.sleep(70000); log.info("debug-log4j2 test*4"); Thread.sleep(30000); log.debug("debug-log4j2 test*5"); Thread.sleep(30000); log.debug("debug-log4j2 test*6"); Thread.sleep(30000); log.debug("debug-log4j2 test*7"); Thread.sleep(30000); log.debug("debug-log4j2 test*8"); Thread.sleep(290000); log.debug("debug-log4j2 test*9"); Thread.sleep(30000); log.debug("debug-log4j2 test*10"); System.out.println("debug-log4j2 test*6"); } PS Please forgive if I wasn't narrate the problem properly. any quick help in this issue would be highly appreciated. > Failover appender throws "Error flushing stream > //L-Computer1/test/logs/primary.log" at the time of retry, but the location > is up > --------------------------------------------------------------------------------------------------------------------------------- > > Key: LOG4J2-878 > URL: https://issues.apache.org/jira/browse/LOG4J2-878 > Project: Log4j 2 > Issue Type: Bug > Components: Appenders > Affects Versions: 2.0.2 > Environment: development and will be moved to production in a weeks > time. > Reporter: saran sundar > Priority: Critical > Labels: test > Original Estimate: 96h > Remaining Estimate: 96h > > OS: Windows > Software platform: j2ee, spring, webservices, junit, log4j2 > I want to make sure that the failover configuration works as expected. > I configured failover appender with two rolling file appenders. Primary > rolling file appender configured to a shared folder in different computer. > Secondary file appender pointing to my local file system. Once after i ran > the junit program and the first debug statement printed, i removed the share > location from the other computer in the network for the primary appender. As > expected next debug statements ( i left thread.sleep(30000) in between each > debug statement in junit program) were redirect to secondary file appender. > However at the time of retry by failover appender , it tries to reconnect to > the primary location which is up now (enabled the share location in different > computer), but received following error.. > 2014-10-21 10:34:11,463 ERROR Unable to write to stream > //L-Computer1/test/logs/primary.log for appender primeCompressedDaily > 2014-10-21 10:34:11,463 ERROR An exception occurred processing Appender > primeCompressedDaily > org.apache.logging.log4j.core.appender.AppenderLoggingException: Error > flushing stream //L-Computer1/test/logs/primary.log > at > org.apache.logging.log4j.core.appender.OutputStreamManager.flush(OutputStreamManager.java:159) > at > org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:108) > at > org.apache.logging.log4j.core.appender.RollingFileAppender.append(RollingFileAppender.java:86) > at > org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:97) > at > org.apache.logging.log4j.core.appender.FailoverAppender.callAppender(FailoverAppender.java:117) > at > org.apache.logging.log4j.core.appender.FailoverAppender.append(FailoverAppender.java:109) > at > org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:97) > at > org.apache.logging.log4j.core.appender.AsyncAppender$AsyncThread.callAppenders(AsyncAppender.java:288) > at > org.apache.logging.log4j.core.appender.AsyncAppender$AsyncThread.run(AsyncAppender.java:240) > Caused by: java.io.IOException: The specified network name is no longer > available > at java.io.FileOutputStream.writeBytes(Native Method) > at java.io.FileOutputStream.write(FileOutputStream.java:318) > at > java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) > at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) > at > org.apache.logging.log4j.core.appender.OutputStreamManager.flush(OutputStreamManager.java:156) > ... 8 more > 2014-10-21 10:39:31,484 ERROR Unable to write to stream > //L-Computer1/test/logs/primary.log for appender primeCompressedDaily > log4j2.xml entries is given below, > <?xml version="1.0" encoding="UTF-8"?> > <!-- set status below to FATAL to suppress a bug in log4j2: "ERROR appender > Failover has no parameter that matches element Failovers" --> > <!-- other working value for status is "warn" - --> > <Configuration status="warn" name="log4j2" packages="com.ims.log4j"> > <Appenders> > > <Console name="stdout" target="SYSTEM_OUT" > ignoreExceptions="false"> > <PatternLayout pattern="%d{ABSOLUTE} %1p %X{userinfo} > %c{1}:%L - %m%n"/> > </Console> > > <RollingFile name="compressedDaily" > fileName="c:/installed/Tomcat-7.0.12/logs/secondary.log" > > filePattern="c:/installed/Tomcat-7.0.12/logs/secondary.log.%d{yyyy-MM-dd}.gz" > ignoreExceptions="false"> > <PatternLayout> > <Pattern>%d{ABSOLUTE} %1p %X{userinfo} %c{1}:%L > - %m%n</Pattern> > </PatternLayout> > <Policies> > <TimeBasedTriggeringPolicy/> > <SizeBasedTriggeringPolicy/> > </Policies> > </RollingFile> > > <RollingFile name="primeCompressedDaily" > fileName="//L-Computer1/test/logs/primary.log" > > filePattern="//L-Computer1/test/logs/primary.log.%d{yyyy-MM-dd}.gz" > ignoreExceptions="false" > > <PatternLayout> > <Pattern>%d{ABSOLUTE} %1p %X{userinfo} %c{1}:%L > - %m%n</Pattern> > </PatternLayout> > <Policies> > <TimeBasedTriggeringPolicy/> > <SizeBasedTriggeringPolicy/> > </Policies> > </RollingFile> > > <Failover name="FailoverAppender" > primary="primeCompressedDaily" retryInterval="61" ignoreExceptions="false"> > <Failovers> > <AppenderRef ref="compressedDaily" /> > </Failovers> > </Failover> > > <Async name="asyncCompressed"> > <AppenderRef ref="FailoverAppender" /> > </Async> > <Async name="asyncStdout"> > <AppenderRef ref="stdout" /> > </Async> > > </Appenders> > > <Loggers> > > <Root level="trace"> > <AppenderRef ref="asyncCompressed" level="trace"/> > <AppenderRef ref="asyncStdout" level="trace"/> > </Root> > > <Logger name="com.ims" level="debug" includeLocation="true" > additivity="false"> > <AppenderRef ref="asyncCompressed"/> > </Logger> > > <Logger name="org.apache.cxf.interceptor.LoggingInInterceptor" > level="info" includeLocation="true" additivity="false"> > <AppenderRef ref="asyncCompressed"/> > </Logger> > > <Logger name="org.apache.cxf.interceptor.LoggingOutInterceptor" > level="info" includeLocation="true" additivity="false"> > <AppenderRef ref="asyncCompressed"/> > </Logger> > > <Logger name="org.hibernate" level="error" > includeLocation="true" additivity="false"> > <AppenderRef ref="asyncCompressed"/> > </Logger> > > <Logger name="test.escalation" level="debug" includeLocation="true" > additivity="false"> > <AppenderRef ref="asyncCompressed"/> > </Logger> > > <Logger name="org.apache.cxf" level="info" includeLocation="true" > additivity="false"> > <AppenderRef ref="asyncCompressed"/> > </Logger> > > </Loggers> > > </Configuration> > Junit method > @Test > public void log4jTest() throws Exception { > System.out.println("log4j2 test"); > Thread.sleep(30000); > log.error("debug-log4j2 test*1"); > Thread.sleep(60000); > log.error("debug-log4j2 test*2"); > Thread.sleep(30000); > System.out.println("debug-log4j2 test*3"); > Thread.sleep(70000); > log.info("debug-log4j2 test*4"); > Thread.sleep(30000); > log.debug("debug-log4j2 test*5"); > Thread.sleep(30000); > log.debug("debug-log4j2 test*6"); > Thread.sleep(30000); > log.debug("debug-log4j2 test*7"); > Thread.sleep(30000); > log.debug("debug-log4j2 test*8"); > Thread.sleep(290000); > log.debug("debug-log4j2 test*9"); > Thread.sleep(30000); > log.debug("debug-log4j2 test*10"); > System.out.println("debug-log4j2 test*6"); > } > PS Please forgive if I wasn't narrate the problem properly. any quick help in > this issue would be highly appreciated. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-dev-h...@logging.apache.org