You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-user@logging.apache.org by e120281 <me...@hotmail.com> on 2007/04/05 14:03:20 UTC

blocking problem

i am using log4j with jboss application server.
the smtpappender doesnot fulfill my needs so i write another smtpappender.
this appender has an attribute name String mailTo.
so you can change the mailto address from the xml file.
i have an asyncappender which contains a reference to the my smtpappender.
since jboss also uses log4j and it has a log4j.xml file i write my loggers
in that file.
and as you know jboss has a thread that checks whether this file changed or
not.

think of a position that asyncappender has 5 event in its queue. 
at that moment if i make a change in the log4j.xml file (change the mailto
value) jboss thread tries to update the
mailTo field of my appender. But since there is an ongoing event in that
appender this thread is get blocked.
if again at that moment i send another event to my appender it also gets
blocked (so my sessionbean gets blocked).
what happens is first the 5 events in the queue is processed and then the
mailTo field updated and finally
my session bean finishes the logging event.

what i want is my session bean never gets blocked. how can i do that.

------------------------------------------------------------------------------------------------------------------------
	<appender name="EMAIL"  class="org.uekae.log4j.appender.SMTPAppender">			
		<param name="mailFrom" value="xxx"/>
		<param name="subject" value="yyy"/>
		<param name="bufferSize" value="1" /> 
		<param name="mailTo" value="mehmetbilgin@gmail.com"/> -->
	</appender>

   	<appender name="AsyncEmail" class="org.apache.log4j.AsyncAppender">
		<param name="blocking" value="false" />
     		<appender-ref ref="EMAIL"/>
   	</appender>

	<logger name="EmailLogger" additivity="false">
		<level value="error"/>
		<appender-ref ref="AsyncEmail" />
	</logger>
--------------------------------------------------------------------------------------------------------
/**
 * This singleton class is used for logging
 * 
 */
public class MyLogger {


	private static final Logger emailLogger = Logger
			.getLogger("EmailLogger");

	private static volatile MyLogger instance = null;

	private boolean debug = true;

	private boolean emailOption = true;

	protected MyLogger() {
	}

	public static MyLogger getInstance() {
		if (instance == null) {
			synchronized (MyLogger.class) {
				if (instance == null) {
					instance = new MyLogger();
				}
			}
		}
		return instance;
	}

	public void warn(String message) {
		emailLogger.warn(message);
	}

	public void error(String message) {
		emailLogger.error(message); // my session bean gets blocked at this line
	}
}

sorry for my english
that is all i can do.




-- 
View this message in context: http://www.nabble.com/blocking-problem-tf3531171.html#a9854493
Sent from the Log4j - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org