Changeset 2399

Show
Ignore:
Timestamp:
07/15/09 23:18:57 (4 years ago)
Author:
lmajano
Message:

logbox category inheritance

Location:
coldbox/trunk
Files:
1 added
3 modified

Legend:

Unmodified
Added
Removed
  • coldbox/trunk/system/logging/LogBox.cfc

    r2397 r2399  
    3434                instance.categoryAppenders = "";         
    3535                // Version 
    36                 instance.version = "1.0 Beta";    
     36                instance.version = "1.0 Beta 2";          
    3737                // Configuration object 
    3838                instance.config = "";    
     
    123123                        arguments.category = trim(arguments.category); 
    124124                         
    125                         //Is logger created already? 
     125                        //Is logger by category name created already? 
    126126                        if( structKeyExists(instance.loggerRegistry,arguments.category) ){ 
    127127                                return instance.loggerRegistry[arguments.category]; 
    128128                        } 
    129                          
    130                         //Do we have a cat definition? 
     129                        //Do we have a category definition, so we can build it? 
    131130                        if( getConfig().categoryExists(arguments.category) ){ 
    132131                                categoryConfig = getConfig().getCategory(arguments.category); 
     132                                // Setup creation arguments 
    133133                                args.category = categoryConfig.name; 
    134134                                args.levelMin = categoryConfig.levelMin; 
     
    137137                        } 
    138138                        else{ 
    139                                 // Do 
     139                                // Setup new category name 
    140140                                args.category = arguments.category; 
     141                                // Do Category Inheritance? or else just return the root logger. 
     142                                root = locateCategoryParentLogger(arguments.category); 
     143                                // Setup the category levels according to parent found. 
    141144                                args.levelMin = root.getLevelMin(); 
    142145                                args.levelMax = root.getLevelMax(); 
     
    174177 
    175178<!------------------------------------------- PRIVATE ------------------------------------------> 
     179         
     180        <!--- locateCategoryParentLogger ---> 
     181        <cffunction name="locateCategoryParentLogger" output="false" access="private" returntype="any" hint="Get a parent logger according to category convention inheritance.  If not found, it returns the root logger."> 
     182                <cfargument name="category" type="string" required="true" hint="The category name to investigate for parents."/> 
     183                <cfscript> 
     184                        // Get parent category name shortened by one. 
     185                        var parentCategory = listDeleteAt(arguments.category, listLen(arguments.category,"."), "."); 
     186                         
     187                        // Check if parent Category is empty 
     188                        if( len(parentCategory) EQ 0 ){ 
     189                                // Just return the root logger, nothing found. 
     190                                return getRootLogger(); 
     191                        }                        
     192                        // Does it exist already in the instantiated loggers? 
     193                        if( structKeyExists(instance.loggerRegistry,parentCategory) ){ 
     194                                return instance.loggerRegistry[parentCategory]; 
     195                        } 
     196                        // Do we need to create it, lazy loading? 
     197                        if( getConfig().categoryExists(arguments.category) ){ 
     198                                return getLogger(arguments.category);    
     199                        } 
     200                        // Else, it was not located, recurse 
     201                        return locateCategoryParentLogger(parentCategory);                       
     202                </cfscript> 
     203        </cffunction> 
    176204         
    177205        <!--- registerAppender ---> 
  • coldbox/trunk/testharness/handlers/ehGeneral.cfc

    r2345 r2399  
    4040        <cfproperty name="loaderService"                                type="coldbox:loaderService"            scope="instance"> 
    4141        <cfproperty name="cacheManager"                                 type="coldbox:cacheManager"             scope="instance"> 
     42        <cfproperty name="TimeSlotService"                              type="model"            scope="variables"> 
    4243         
    4344        <!--- properties ---> 
     
    4546                this.allowedMethods = {doFormBean="POST,GET"}; 
    4647        </cfscript> 
     48         
     49        <!--- onDIComplete ---> 
     50        <cffunction name="onDIComplete" output="false" access="public" returntype="any" hint=""> 
     51                <cfdump var="#variables.TimeSlotService#"><cfabort> 
     52        </cffunction> 
    4753 
    4854        <cffunction name="init" access="public" returntype="any" output="false"> 
  • coldbox/trunk/testing/cases/logging/LogBoxTest.cfc

    r2366 r2399  
    1010                //root 
    1111                config.root(appenders="luis,luis2"); 
    12                  
     12                //Sample categories 
     13                config.debug("coldbox.system.interceptors"); 
     14                config.off("coldbox.system"); 
     15                //init logBox 
    1316                logBox.init(config); 
    1417        } 
     
    1720                logger = logBox.getLogger('MyCat'); 
    1821                logger.debug("My Test"); 
     22                 
     23                //2: category inheritance 
     24                logger = logBox.getLogger("coldbox.system.interceptors.SES"); 
     25                assertEquals( logger.getLevelMin(), logger.logLevels.DEBUG); 
     26                assertEquals( logger.getRootLogger().getCategory(), "coldbox.system.interceptors"); 
     27                 
     28                //3: category inheritance 
     29                logger = logBox.getLogger("coldbox.system.plugins"); 
     30                assertEquals( logger.getLevelMin(), logger.logLevels.OFF); 
     31                assertEquals( logger.getRootLogger().getCategory(), "coldbox.system"); 
    1932        } 
    2033         
     34        function testgetRootLogger(){ 
     35                logger = logBox.getRootLogger(); 
     36                logger.info("Test"); 
     37        } 
     38         
     39        function testGetCurrentLoggers(){ 
     40                debug( logBox.getCurrentLoggers() ); 
     41        } 
     42        function testGetCurrentAppenders(){ 
     43                debug( logBox.getCurrentAppenders() ); 
     44        } 
     45         
     46        function testLocateCategoryParentLogger(){ 
     47                makePublic(logbox,"locateCategoryParentLogger"); 
     48                // 1: root logger 
     49                assertEquals( logBox.getRootLogger(), logBox.locateCategoryParentLogger("invalid") ); 
     50                 
     51                // 2: Expecting a logger with debug levels only 
     52                logger = logBox.locateCategoryParentLogger("coldbox.system.interceptors.SES"); 
     53                assertEquals( logger.getLevelMin(), logger.logLevels.DEBUG); 
     54                 
     55                // 3: Expecting an OFF logger 
     56                logger = logBox.locateCategoryParentLogger("coldbox.system.plugins"); 
     57                assertEquals( logger.getLevelMin(), logger.logLevels.OFF); 
     58        } 
    2159</cfscript> 
    2260</cfcomponent>