You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by do...@apache.org on 2001/03/27 06:20:54 UTC
cvs commit: jakarta-avalon-logkit/src/java/org/apache/log LogEngine.java LogKit.java Logger.java
donaldp 01/03/26 20:20:53
Modified: src/java/org/apache/log LogKit.java Logger.java
Added: src/java/org/apache/log LogEngine.java
Log:
Updated logkit to support multiple hierarchies via LogEngines.
Revision Changes Path
1.2 +14 -71 jakarta-avalon-logkit/src/java/org/apache/log/LogKit.java
Index: LogKit.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-logkit/src/java/org/apache/log/LogKit.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- LogKit.java 2001/02/20 01:38:04 1.1
+++ LogKit.java 2001/03/27 04:20:53 1.2
@@ -12,6 +12,7 @@
import java.util.*;
import org.apache.log.output.*;
import org.apache.log.output.DefaultOutputLogTarget;
+
/**
* The LogKit provides the access to static methods to
* manipulate the logging sub-system
@@ -21,18 +22,7 @@
public final class LogKit
{
protected static final ThreadLocal c_context = new ThreadLocal();
- protected static final Hashtable c_loggers = new Hashtable();
- protected static final Hashtable c_categories = new Hashtable();
- protected static final Hashtable c_logTargets;
- protected static Priority.Enum c_priority = Priority.DEBUG;
- protected static LogTarget c_defaultLogTarget;
-
- static
- {
- c_logTargets = new Hashtable();
- c_defaultLogTarget = new DefaultOutputLogTarget();
- c_logTargets.put( "default", c_defaultLogTarget );
- }
+ protected static final LogEngine c_engine = new LogEngine();
/*
//Need to add this in at LogManager level rather than here ....
@@ -97,8 +87,7 @@
*/
public static void addLogTarget( final String name, final LogTarget target )
{
- if( name.equals("default") ) c_defaultLogTarget = target;
- c_logTargets.put( name, target );
+ c_engine.addLogTarget( name, target );
}
/**
@@ -109,7 +98,7 @@
*/
public static LogTarget getLogTarget( final String name )
{
- return (LogTarget)c_logTargets.get( name );
+ return c_engine.getLogTarget( name );
}
/**
@@ -122,17 +111,7 @@
public static Category createCategory( final String categoryName,
final Priority.Enum priority )
{
- Category category = (Category)c_categories.get( categoryName );
-
- if( null == category )
- {
- category = new Category( categoryName );
- c_categories.put( categoryName, category );
- }
-
- category.setPriority( priority );
-
- return category;
+ return c_engine.createCategory( categoryName, priority );
}
/**
@@ -143,7 +122,7 @@
*/
public static Logger createLogger( final Category category )
{
- return createLogger( category, null );
+ return c_engine.createLogger( category );
}
/**
@@ -155,33 +134,7 @@
*/
public static Logger createLogger( final Category category, final LogTarget logTargets[] )
{
- final String categoryName = category.getName();
- Logger logger = (Logger)c_loggers.get( categoryName );
-
- if( null == logger )
- {
- final int index = categoryName.lastIndexOf( Category.SEPARATOR );
-
- Logger parent = null;
-
- if( -1 != index )
- {
- final String parentName = categoryName.substring( 0, index );
- parent = getLoggerFor( parentName );
- }
-
- logger = new Logger( category, logTargets, parent );
- c_loggers.put( categoryName, logger );
- }
- else
- {
- if( null != logTargets )
- {
- logger.setLogTargets( logTargets );
- }
- }
-
- return logger;
+ return c_engine.createLogger( category, logTargets );
}
/**
@@ -213,7 +166,7 @@
*/
public static LogTarget getDefaultLogTarget()
{
- return c_defaultLogTarget;
+ return c_engine.getDefaultLogTarget();
}
/**
@@ -223,7 +176,7 @@
*/
public static Priority.Enum getGlobalPriority()
{
- return c_priority;
+ return c_engine.getGlobalPriority();
}
/**
@@ -234,15 +187,7 @@
*/
public static Logger getLoggerFor( final String category )
{
- synchronized( c_loggers )
- {
- Logger logger = (Logger)c_loggers.get( category );
- if( null == logger )
- {
- logger = createLogger( createCategory( category, Priority.DEBUG ) );
- }
- return logger;
- }
+ return c_engine.getLoggerFor( category );
}
/**
@@ -266,8 +211,7 @@
*/
public static void log( final String message, final Throwable t )
{
- System.err.println( "Error: " + message );
- t.printStackTrace();
+ c_engine.log( message, t );
}
/**
@@ -275,7 +219,7 @@
*/
public static void log( final String message )
{
- System.err.println( "Error: " + message );
+ c_engine.log( message );
}
/**
@@ -283,8 +227,7 @@
*/
public static void setDefaultLogTarget( final LogTarget defaultLogTarget )
{
- addLogTarget( "default", defaultLogTarget );
- c_defaultLogTarget = defaultLogTarget;
+ c_engine.setDefaultLogTarget( defaultLogTarget );
}
/**
@@ -293,7 +236,7 @@
*/
public static void setGlobalPriority( final Priority.Enum priority )
{
- c_priority = priority;
+ c_engine.setGlobalPriority( priority );
}
/**
1.2 +28 -23 jakarta-avalon-logkit/src/java/org/apache/log/Logger.java
Index: Logger.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-logkit/src/java/org/apache/log/Logger.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Logger.java 2001/02/20 01:38:04 1.1
+++ Logger.java 2001/03/27 04:20:53 1.2
@@ -16,6 +16,7 @@
{
protected final static long START_TIME = System.currentTimeMillis();
+ protected final LogEngine m_engine;
protected final Logger m_parent;
protected final Category m_category;
protected LogTarget[] m_logTargets;
@@ -25,9 +26,9 @@
*
* @param category the category
*/
- public Logger( final Category category )
+ public Logger( final LogEngine engine, final Category category )
{
- this( category, null, null );
+ this( engine, category, null, null );
}
/**
@@ -36,21 +37,25 @@
* @param category the category
* @param logTargets the targets
*/
- public Logger( final Category category, final LogTarget[] logTargets )
+ public Logger( final LogEngine engine, final Category category, final LogTarget[] logTargets )
{
- this( category, logTargets, null );
+ this( engine, category, logTargets, null );
}
- public Logger( final Category category, final LogTarget[] logTargets, final Logger parent )
+ public Logger( final LogEngine engine, final Category category, final Logger parent )
{
- m_category = category;
- m_logTargets = logTargets;
- m_parent = parent;
+ this( engine, category, null, parent );
}
- public Logger( final Category category, final Logger parent )
+ public Logger( final LogEngine engine,
+ final Category category,
+ final LogTarget[] logTargets,
+ final Logger parent )
{
- this( category, null, parent );
+ m_engine = engine;
+ m_category = category;
+ m_logTargets = logTargets;
+ m_parent = parent;
}
/**
@@ -62,7 +67,7 @@
public final void debug( final String message, final Throwable throwable )
{
if( m_category.getPriority().isLowerOrEqual( Priority.DEBUG ) &&
- LogKit.getGlobalPriority().isLowerOrEqual( Priority.DEBUG ) )
+ m_engine.getGlobalPriority().isLowerOrEqual( Priority.DEBUG ) )
{
output( Priority.DEBUG, message, throwable );
}
@@ -76,7 +81,7 @@
public final void debug( final String message )
{
if( m_category.getPriority().isLowerOrEqual( Priority.DEBUG ) &&
- LogKit.getGlobalPriority().isLowerOrEqual( Priority.DEBUG ) )
+ m_engine.getGlobalPriority().isLowerOrEqual( Priority.DEBUG ) )
{
output( Priority.DEBUG, message, null );
}
@@ -91,7 +96,7 @@
public final void error( final String message, final Throwable throwable )
{
if( m_category.getPriority().isLowerOrEqual( Priority.ERROR ) &&
- LogKit.getGlobalPriority().isLowerOrEqual( Priority.ERROR ) )
+ m_engine.getGlobalPriority().isLowerOrEqual( Priority.ERROR ) )
{
output( Priority.ERROR, message, throwable );
}
@@ -105,7 +110,7 @@
public final void error( final String message )
{
if( m_category.getPriority().isLowerOrEqual( Priority.ERROR ) &&
- LogKit.getGlobalPriority().isLowerOrEqual( Priority.ERROR ) )
+ m_engine.getGlobalPriority().isLowerOrEqual( Priority.ERROR ) )
{
output( Priority.ERROR, message, null );
}
@@ -120,7 +125,7 @@
public final void fatalError( final String message, final Throwable throwable )
{
if( m_category.getPriority().isLowerOrEqual( Priority.FATAL_ERROR ) &&
- LogKit.getGlobalPriority().isLowerOrEqual( Priority.FATAL_ERROR ) )
+ m_engine.getGlobalPriority().isLowerOrEqual( Priority.FATAL_ERROR ) )
{
output( Priority.FATAL_ERROR, message, throwable );
}
@@ -134,7 +139,7 @@
public final void fatalError( final String message )
{
if( m_category.getPriority().isLowerOrEqual( Priority.FATAL_ERROR ) &&
- LogKit.getGlobalPriority().isLowerOrEqual( Priority.FATAL_ERROR ) )
+ m_engine.getGlobalPriority().isLowerOrEqual( Priority.FATAL_ERROR ) )
{
output( Priority.FATAL_ERROR, message, null );
}
@@ -159,7 +164,7 @@
public final void info( final String message )
{
if( m_category.getPriority().isLowerOrEqual( Priority.INFO ) &&
- LogKit.getGlobalPriority().isLowerOrEqual( Priority.INFO ) )
+ m_engine.getGlobalPriority().isLowerOrEqual( Priority.INFO ) )
{
output( Priority.INFO, message, null );
}
@@ -177,7 +182,7 @@
final Throwable throwable )
{
if( m_category.getPriority().isLowerOrEqual( priority ) &&
- LogKit.getGlobalPriority().isLowerOrEqual( priority ) )
+ m_engine.getGlobalPriority().isLowerOrEqual( priority ) )
{
output( priority, message, throwable );
}
@@ -192,7 +197,7 @@
public final void log( final Priority.Enum priority, final String message )
{
if( m_category.getPriority().isLowerOrEqual( priority ) &&
- LogKit.getGlobalPriority().isLowerOrEqual( priority ) )
+ m_engine.getGlobalPriority().isLowerOrEqual( priority ) )
{
output( priority, message, null );
}
@@ -244,7 +249,7 @@
}
else
{
- LogKit.getDefaultLogTarget().processEntry( entry );
+ m_engine.getDefaultLogTarget().processEntry( entry );
}
}
else
@@ -267,7 +272,7 @@
public final void warn( final String message, final Throwable throwable )
{
if( m_category.getPriority().isLowerOrEqual( Priority.WARN ) &&
- LogKit.getGlobalPriority().isLowerOrEqual( Priority.WARN ) )
+ m_engine.getGlobalPriority().isLowerOrEqual( Priority.WARN ) )
{
output( Priority.WARN, message, throwable );
}
@@ -281,7 +286,7 @@
public final void warn( final String message )
{
if( m_category.getPriority().isLowerOrEqual( Priority.WARN ) &&
- LogKit.getGlobalPriority().isLowerOrEqual( Priority.WARN ) )
+ m_engine.getGlobalPriority().isLowerOrEqual( Priority.WARN ) )
{
output( Priority.WARN, message, null );
}
@@ -318,6 +323,6 @@
{
final String categoryName =
m_category.getName() + Category.SEPARATOR + subcategory;
- return LogKit.getLoggerFor( categoryName );
+ return m_engine.getLoggerFor( categoryName );
}
}
1.1 jakarta-avalon-logkit/src/java/org/apache/log/LogEngine.java
Index: LogEngine.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.log;
import java.io.File;
import java.lang.reflect.*;
import java.util.*;
import org.apache.log.output.*;
import org.apache.log.output.DefaultOutputLogTarget;
/**
* This defines the basic interface to a log engine.
* The log engine represents an independent hierarchy.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public final class LogEngine
{
protected final Hashtable c_loggers = new Hashtable();
protected final Hashtable c_categories = new Hashtable();
protected final Hashtable c_logTargets;
protected Priority.Enum c_priority = Priority.DEBUG;
protected LogTarget c_defaultLogTarget;
public LogEngine()
{
c_logTargets = new Hashtable();
c_defaultLogTarget = new DefaultOutputLogTarget();
c_logTargets.put( "default", c_defaultLogTarget );
}
/**
* Add a named log target to global list.
*
* @param name the name of target
* @param target the target
*/
public void addLogTarget( final String name, final LogTarget target )
{
if( name.equals("default") ) c_defaultLogTarget = target;
c_logTargets.put( name, target );
}
/**
* Retrieve named log target if it exists.
*
* @param name the name of log target
* @return the LogTarget
*/
public LogTarget getLogTarget( final String name )
{
return (LogTarget)c_logTargets.get( name );
}
/**
* Create or update named category and retrieve it.
*
* @param categoryName name of category
* @param priority the priority of categroy
* @return the catgeory
*/
public Category createCategory( final String categoryName, final Priority.Enum priority )
{
Category category = (Category)c_categories.get( categoryName );
if( null == category )
{
category = new Category( categoryName );
c_categories.put( categoryName, category );
}
category.setPriority( priority );
return category;
}
/**
* Create or update instance of logger.
*
* @param category the category that logger logs about
* @return the Logger
*/
public Logger createLogger( final Category category )
{
return createLogger( category, null );
}
/**
* Create or update instance of logger.
*
* @param logTargets[] the list of log targets logger is to output to.
* @param category the category that logger logs about
* @return the Logger
*/
public Logger createLogger( final Category category, final LogTarget logTargets[] )
{
final String categoryName = category.getName();
Logger logger = (Logger)c_loggers.get( categoryName );
if( null == logger )
{
final int index = categoryName.lastIndexOf( Category.SEPARATOR );
Logger parent = null;
if( -1 != index )
{
final String parentName = categoryName.substring( 0, index );
parent = getLoggerFor( parentName );
}
logger = new Logger( this, category, logTargets, parent );
c_loggers.put( categoryName, logger );
}
else
{
if( null != logTargets )
{
logger.setLogTargets( logTargets );
}
}
return logger;
}
/**
* Retrieve the default log target.
*
* @return the default LogTarget
*/
public LogTarget getDefaultLogTarget()
{
return c_defaultLogTarget;
}
/**
* Return VM global priority.
*
* @return the priority
*/
public Priority.Enum getGlobalPriority()
{
return c_priority;
}
/**
* Retrieve a logger for named category.
*
* @param category the context
* @return the Logger
*/
public Logger getLoggerFor( final String category )
{
synchronized( c_loggers )
{
Logger logger = (Logger)c_loggers.get( category );
if( null == logger )
{
logger = createLogger( createCategory( category, Priority.DEBUG ) );
}
return logger;
}
}
/**
* Log an error message and exception to stderr.
* TODO: replace this with an error handler
*/
public void log( final String message, final Throwable t )
{
System.err.println( "Error: " + message );
t.printStackTrace();
}
/**
* Logs an error message to stderr.
* TODO: replace this with an error handler
*/
public void log( final String message )
{
System.err.println( "Error: " + message );
}
/**
* Sets the default LogTarget for the default logger.
*/
public void setDefaultLogTarget( final LogTarget defaultLogTarget )
{
addLogTarget( "default", defaultLogTarget );
c_defaultLogTarget = defaultLogTarget;
}
/**
* Set the global priority for this virtual machine. Nothing below
* this level will be logged when using this LogKit.
*/
public void setGlobalPriority( final Priority.Enum priority )
{
c_priority = priority;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: avalon-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: avalon-dev-help@jakarta.apache.org
Re: cvs
commit:jakarta-avalon-logkit/src/java/org/apache/logLogEngine.java
LogKit.javaLogger.java
Posted by Jon Stevens <jo...@latchkey.com>.
on 3/27/01 1:44 AM, "Peter Donald" <do...@apache.org> wrote:
> (a) I was under impression velocity was moving to log4j
Myself and Geir and Jason added support for the ability to plug in any
logging tool via a simple interface. Both LogKit and Log4J are both fully
supported.
> (b) they never directly called the constructor
Ok. That is something that I wanted you to confirm. However, how do you know
what other people's software is calling?
> (c) if it had of broken them it would have taken a simple note to fix it
> rather than screaming "bloody murder"
The point being that Sam has been quietly screaming bloody murder for the
last 3-4 months now and it still doesn't seem to be getting into anyone's
head. I'm not afraid to scream a bit louder. Eh? :-)
-jon
---------------------------------------------------------------------
To unsubscribe, e-mail: avalon-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: avalon-dev-help@jakarta.apache.org
Re: cvs
commit:jakarta-avalon-logkit/src/java/org/apache/logLogEngine.java
LogKit.javaLogger.java
Posted by Peter Donald <do...@apache.org>.
At 11:53 26/3/01 -0800, Jon Stevens wrote:
>Ok, so if you object to it so much, how come you went back and fixed it
>after I complained?
I don't object to it but I am not going to put pointless effort into
maintaining something that no one wants/needs/uses. The only it was put in
was because presumably you have a problem which requires it.
>Also, given that Velocity is known to use logkit, how about you take the
>time to make sure that Velocity still builds correctly against your changes?
Well
(a) I was under impression velocity was moving to log4j
(b) they never directly called the constructor
(c) if it had of broken them it would have taken a simple note to fix it
rather than screaming "bloody murder"
Cheers,
Pete
*-----------------------------------------------------*
| "Faced with the choice between changing one's mind, |
| and proving that there is no need to do so - almost |
| everyone gets busy on the proof." |
| - John Kenneth Galbraith |
*-----------------------------------------------------*
---------------------------------------------------------------------
To unsubscribe, e-mail: avalon-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: avalon-dev-help@jakarta.apache.org
Re: cvs commit:
jakarta-avalon-logkit/src/java/org/apache/logLogEngine.java LogKit.java
Logger.java
Posted by Jon Stevens <jo...@latchkey.com>.
on 3/26/01 9:22 PM, "Peter Donald" <do...@apache.org> wrote:
> It is highly unlikely that anyone was using that "API". In reality the
> methods should have been package/protected access anyway - not sure why
> they were public. If someone does have an issue with there is an ugly hack
> workaround but I don't see it is likely.
>
> If every "API change" was deprecated there would be mountains of archaic
> code in certain projects (ant and avalon being two candidates).
Ok, so if you object to it so much, how come you went back and fixed it
after I complained?
Also, given that Velocity is known to use logkit, how about you take the
time to make sure that Velocity still builds correctly against your changes?
thanks,
-jon
--
If you come from a Perl or PHP background, JSP is a way to take
your pain to new levels. --Anonymous
<http://jakarta.apache.org/velocity/ymtd/ymtd.html>
---------------------------------------------------------------------
To unsubscribe, e-mail: avalon-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: avalon-dev-help@jakarta.apache.org
Re: cvs commit:
jakarta-avalon-logkit/src/java/org/apache/logLogEngine.java
LogKit.java Logger.java
Posted by Peter Donald <do...@apache.org>.
At 09:14 26/3/01 -0800, Jon Stevens wrote:
>on 3/26/01 8:20 PM, "donaldp@apache.org" <do...@apache.org> wrote:
>
>> - public Logger( final Category category )
>> + public Logger( final LogEngine engine, final Category category )
>
>Can I kill someone?
>
>API CHANGES NEED TO BE DEPRECATED!!!!!!!!!!!!!!!!!!!!
It is highly unlikely that anyone was using that "API". In reality the
methods should have been package/protected access anyway - not sure why
they were public. If someone does have an issue with there is an ugly hack
workaround but I don't see it is likely.
If every "API change" was deprecated there would be mountains of archaic
code in certain projects (ant and avalon being two candidates).
Cheers,
Pete
*-----------------------------------------------------*
| "Faced with the choice between changing one's mind, |
| and proving that there is no need to do so - almost |
| everyone gets busy on the proof." |
| - John Kenneth Galbraith |
*-----------------------------------------------------*
---------------------------------------------------------------------
To unsubscribe, e-mail: avalon-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: avalon-dev-help@jakarta.apache.org
Re: cvs commit: jakarta-avalon-logkit/src/java/org/apache/log
LogEngine.java LogKit.java Logger.java
Posted by Jon Stevens <jo...@latchkey.com>.
on 3/26/01 8:20 PM, "donaldp@apache.org" <do...@apache.org> wrote:
> - public Logger( final Category category )
> + public Logger( final LogEngine engine, final Category category )
Can I kill someone?
API CHANGES NEED TO BE DEPRECATED!!!!!!!!!!!!!!!!!!!!
-jon
---------------------------------------------------------------------
To unsubscribe, e-mail: avalon-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: avalon-dev-help@jakarta.apache.org