You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by Kitching Simon <Si...@orange.ch> on 2001/02/06 16:13:25 UTC

RE: PATCH: Priority.java : add method Priority toPriority(int, Pr iori ty)


> -----Original Message-----
> From:	Ceki Gülcü [SMTP:cgu@urbanet.ch]
> Sent:	Tuesday, February 06, 2001 3:52 PM
> To:	LOG4J Developers Mailing List
> Subject:	Re: PATCH: Priority.java : add method Priority
> toPriority(int, Priori ty)
> 
> 
> I agree that the lack of the Priority.toPriority(int intLevel, Priority
> default) is asymmetric when compared to the Priority.toPriority(String)
> variant. However, do you actually make use of the int variant?
> 
> As far as I know, the int form is called when serializing an event. Is it
> used anywhere else? Can you give an example of where this asymmetry poses
> a problem? Thanks, Ceki
	[Kitching Simon]  

	No, I don't know of any situation other than 
	deserialization where the doPriority(int) method 
	is called (in fact, I didn't even realise that 
	serialisation was the reason for that method's 
	existence).

	The only problem is that the code for a custom 
	Priority object looks wrong. I was writing my custom
	Priority, and saw that *if* my overridden string-based
	method was called with a bad string, I returned my
	DEBUG2 priority (lower than DEBUG), but for the int 
	case my code didn't have an equivalent way to handle
	the error; Priority.DEBUG would always be returned.

	It seems to me that if there is error-handling code in 
	org.apache.log4j.Priority, even if this code is never 
	expected to be called, then the derived classes
	should be given the chance to customise it..

> ps: Otherwise, I think the patch is very reasonable. :-)
	[Kitching Simon]  
	Though not very important :-)

> At 14:09 06.02.2001 +0100, you wrote:
> 
> >The standard Priority class implements
> >
> >Priority toPriority(String level)
> >and 
> >Priority toPriority(String level, Priority default)
> >
> >It also implements
> >Priority toPriority(int intLevel)
> >but ****not****
> >Priority toPriority(int intLevel, Priority default)
> >
> >The lack of this last method causes problems when 
> >defining custom priorities; the derived priority class
> >typically calls the inherited method if it doesn't understand
> >a level string or int it is passed, but because of the lack of
> >a default parameter, it cannot control what default value is
> >used if toPriority(int) is called with a totally unknown int value.
> >
> >It's also a little inconsistent/asymmetric not to have the
> >Priority toPriority(int intLevel, Priority default) method defined.
> >
> >Example of custom priority class making use of this patch:
> >
> >Proposed patch:
> >
> >
> >Index: Priority.java
> >===================================================================
> >RCS file: /home/cvspublic/jakarta-log4j/org/apache/log4j/Priority.java,v
> >retrieving revision 1.5
> >diff -u -r1.5 Priority.java
> >--- Priority.java       2001/01/19 16:45:28     1.5
> >+++ Priority.java       2001/02/06 13:05:47
> >@@ -134,20 +134,30 @@
> >   }
> > 
> >   /**
> >-    Convert an integerq passed as argument to a priority. If the
> >-    conversion fails, then this method returns {@link #DEBUG}.      
> >+    Convert an integer passed as argument to a priority. If the
> >+    conversion fails, then this method returns {@link #DEBUG}.
> > 
> >   */
> >   public
> >   static
> >   Priority toPriority(int val) {
> >+    return toPriority(val, Priority.DEBUG);
> >+  }
> >+
> >+  /**
> >+    Convert an integer passed as argument to a priority. If the
> >+    conversion fails, then this method returns the specified default.
> >+  */
> >+  public
> >+  static
> >+  Priority toPriority(int val, Priority defaultPriority) {
> >     switch(val) {
> >     case DEBUG_INT: return DEBUG;
> >     case INFO_INT: return INFO;
> >     case WARN_INT: return WARN;
> >     case ERROR_INT: return ERROR;
> >     case FATAL_INT: return FATAL;
> >-    default: return DEBUG;
> >+    default: return defaultPriority;
> >     }
> >   }
> > 
> >@@ -171,5 +181,6 @@
> >     if(s.equals("FATAL")) return Priority.FATAL;
> >     return defaultPriority;
> >   }
> >+
> > 
> > }
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
> >For additional commands, e-mail: log4j-dev-help@jakarta.apache.org
> 
> ----
> Ceki Gülcü           e-mail: cgu@urbanet.ch (preferred)
> av. de Rumine 5              ceki_gulcu@yahoo.com
> CH-1005 Lausanne          
> Switzerland            Tel: ++41 21 351 23 15
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: log4j-dev-help@jakarta.apache.org