You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by "karan singh malhi (JIRA)" <ji...@apache.org> on 2007/08/08 06:07:59 UTC
[jira] Updated: (OPENEJB-627) Refactor Logging API to tighten
Logger creation
[ https://issues.apache.org/jira/browse/OPENEJB-627?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
karan singh malhi updated OPENEJB-627:
--------------------------------------
Attachment: openejb-627.patch
Refactoring done. This refactoring exercise exposed a few new Loggers (below):
public static final LogCategory OPENEJB_ADMIN = new LogCategory( OPENEJB.name + ".admin");
public static final LogCategory OPENEJB_SERVER_REMOTE = new LogCategory( OPENEJB_SERVER.name + ".remote");
public static final LogCategory HTTPSERVER = new LogCategory( "HttpServer");
public static final LogCategory SERVICEPOOL = new LogCategory( "ServicePool");
logger = Logger.getInstance(LogCategory.OPENEJB_SERVER.createChild("service."+getName()),
"org.apache.openejb.server.util.resources");
> Refactor Logging API to tighten Logger creation
> -----------------------------------------------
>
> Key: OPENEJB-627
> URL: https://issues.apache.org/jira/browse/OPENEJB-627
> Project: OpenEJB
> Issue Type: Improvement
> Reporter: karan singh malhi
> Attachments: openejb-627.patch
>
>
> Below is a proposal from Karan Singh:
> -----------------------------------------------------
> The current getInstance method of Logger has the following signature:
> Logger getInstance(String name, String baseName)
> Logger getInstance(String name, Class clazz)
> If one had to obtain a Logger, it is still to easy to do something like
> Logger logger = Logger.getInstance("abc","org.apache.openejb");
> i.e. it is still easy to bypass the LogCategory totally. Over time,
> this might lead to a problem in that we might again end up in a
> situation where we have loggers which are lost in code and are not
> defined in log4j.configuration because nobody knows about their
> existence. I mean, you can still go and add a Category to LogCategory
> and not update log4j configuration, but this way atleast we have
> tighter control over where to look for all Categories and then update
> log4j if required.
> I am thinking to refactor the Logger and LogCategory as below:
> Logger getInstance(LogCategory category, String baseName)
> Logger getInstance(LogCategory category, Class clazz)
> public final class LogCategory {
> private String name;
> public static final LogCategory OPENEJB = new LogCategory("OpenEJB");
> public static final LogCategory OPENEJB_STARTUP =
> new LogCategory (OPENEJB.name + ".startup");
> ...
> ...
> private LogCategory(String name){ this.name = name;}
> public String getName(){return this.name;}
> }
> What this also gives us is an ability to add methods, for lets say,
> generating LogCategories, given a deploymentId (David blevins idea
> about loggers with deploymentId as a suffix)
> ==============================================================================
> David Blevins enhanced the proposal with a great idea (see below) -- This will be very helpful in creating Loggers with specific moduleId's
> --------------------------------------------------------------------------------------------------
> So I can see some appeal to the idea. I guess if we used old school
> enums as you propose we could make it work. We just need some nice
> way to create the "sub categories". Maybe we could tuck the creation
> of the non static final (the dynamically created) LogCategories away
> as in..
> // Standard setup part
> private static final Logger log = Logger.getInstance
> (LogCategory.OPENEJB_DEPLOY, Foo.class);
> // Now later i need to do something app specific
> Logger appLog = log.getLogger("mySuperApp");
> -- - - -- - - - - - -
> Under the covers it might just be something like:
> return Logger.getInstance(this.logCategory.createChild
> ("mySuperApp", this.packageName);
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.