Changeset 2364

Show
Ignore:
Timestamp:
07/04/09 19:40:26 (4 years ago)
Author:
lmajano
Message:

made logbox case-insensitive for all appenders and categories

Location:
coldbox/trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • coldbox/trunk/system/interceptors/Autowire.cfc

    r2247 r2364  
    133133                        /* Exclude the core plugins from autowires */ 
    134134                        if( not findnocase("coldbox.system.plugins",targetPath) ){ 
    135                                 /* Process Autowire */ 
    136                                 instance.beanFactory.autowire(target=targetObject, 
    137                                                                                           useSetterInjection=getProperty('enableSetterInjection'), 
    138                                                                                           annotationCheck=true, 
    139                                                                                           onDICompleteUDF=getProperty('completeDIMethodName'), 
    140                                                                                           debugMode=getProperty('debugMode')); 
     135                                try{ 
     136                                        /* Process Autowire */ 
     137                                        instance.beanFactory.autowire(target=targetObject, 
     138                                                                                                  useSetterInjection=getProperty('enableSetterInjection'), 
     139                                                                                                  annotationCheck=true, 
     140                                                                                                  onDICompleteUDF=getProperty('completeDIMethodName'), 
     141                                                                                                  debugMode=getProperty('debugMode')); 
     142                                } 
     143                                catch(Any e){ 
     144                                        getPlugin("logger").error("Error autowiring handler #getmetadata(targetObject).name#. #e.message# #e.detail#"); 
     145                                        throw(message="Error autowiring handler #getmetadata(targetObject).name#",detail="#e.stacktrace#",type="Autowire.AutowireException"); 
     146                                } 
    141147                        }        
    142148                </cfscript> 
  • coldbox/trunk/system/logging/AbstractAppender.cfc

    r2363 r2364  
    7979        <!--- Get the name ---> 
    8080        <cffunction name="getName" access="public" returntype="string" output="false" hint="Get this appender's name"> 
    81                 <cfreturn instance.name> 
     81                <cfreturn ucase(instance.name)> 
    8282        </cffunction> 
    8383         
  • coldbox/trunk/system/logging/LogBox.cfc

    r2363 r2364  
    5151                         
    5252                        // Configure LogBox 
    53                         configure(); 
     53                        configure(instance.config); 
    5454                         
    5555                        // Return LogBox 
    5656                        return this; 
    5757                </cfscript> 
     58        </cffunction> 
     59         
     60        <!--- configure ---> 
     61        <cffunction name="configure" output="false" access="public." returntype="void" hint="Configure logbox for operation. You can also re-configure LogBox programmatically. Basically we register all appenders here and all categories"> 
     62                <cfargument name="logBoxConfig" type="coldbox.system.logging.config.LogBoxConfig" required="true" hint="The LogBoxConfig object to use to configure this instance of LogBox"/> 
     63                <cfscript> 
     64                        var config = arguments.logBoxConfig; 
     65                        var appenders = config.getAppenders(); 
     66                        var key = ""; 
     67                        var categories = config.getCategories(); 
     68                </cfscript> 
     69                 
     70                <cflock name="#instance._hash#.logbox.config" type="exclusive" timeout="30" throwontimeout="true"> 
     71                <cfscript> 
     72                        // Register All Appenders configured 
     73                        for( key in appenders ){ 
     74                                registerNew(argumentCollection=appenders[key]); 
     75                        } 
     76                        // Clean just in case 
     77                        key = ""; 
     78                        // Register All Category Appenders defined in the configuration object. 
     79                        for( key in categories ){ 
     80                                instance.categoryAppenders[key] = getAppendersMap(categories[key].appenders); 
     81                        } 
     82                </cfscript> 
     83                </cflock> 
    5884        </cffunction> 
    5985         
     
    74100                <cfset structClear(getAppenders())> 
    75101        </cffunction> 
     102         
     103        <!--- removeAppender ---> 
     104        <cffunction name="removeAppender" output="false" access="public" returntype="boolean" hint="Remove an appender if it exists. Else returns false."> 
     105                <cfargument name="name" type="string" required="true" hint="The appender's name"/> 
     106                <cfscript> 
     107                        if( appenderExists(arguments.name) ){ 
     108                                getAppenders().remove(ucase(arguments.name)); 
     109                                return true; 
     110                        } 
     111                        return false; 
     112                </cfscript> 
     113        </cffunction> 
    76114                 
    77115        <!--- hasAppenders ---> 
     
    95133                <cfscript> 
    96134                        if( appenderExists(arguments.name) ){ 
    97                                 return structFind(getAppenders(),arguments.name); 
     135                                return structFind(getAppenders(),ucase(arguments.name)); 
    98136                        } 
    99137                        else{ 
    100                                 getutil().throwit(message="Appender #arguments.name# does not exist.",type="LogBox.AppenderNotFound"); 
     138                                getutil().throwit(message="Appender #arguments.name# does not exist.",detail="The appenders registered are #structKeyList(getAppenders())#",type="LogBox.AppenderNotFound"); 
    101139                        } 
    102140                </cfscript> 
     
    106144        <cffunction name="appenderExists" output="false" access="public" returntype="boolean" hint="Checks to see if a specified appender exists by name."> 
    107145                <cfargument name="name" type="string" required="true" hint="The name of the appender to check if it is registered"/> 
    108                 <cfreturn structKeyExists(getAppenders(), arguments.name)> 
     146                <cfreturn structKeyExists(getAppenders(), ucase(arguments.name))> 
    109147        </cffunction> 
    110148         
     
    115153                <!--- ************************************************************* ---> 
    116154                <cfset var name = ""> 
    117                 <!--- Verify Name ---> 
     155                 
     156                <!--- Verify the appender's Name ---> 
    118157                <cfif NOT len(arguments.appender.getName())> 
    119158                        <cfthrow message="Appender does not have a name, please instantiate the appender with a unique name." 
     
    122161                        <cfset name = arguments.appender.getName()> 
    123162                </cfif> 
     163                 
    124164                <!--- Verify Registration ---> 
    125165                <cfif NOT appenderExists(name)> 
    126                         <cflock name="#instance._hash#.#name#" type="exclusive" throwontimeout="true" timeout="30"> 
     166                        <cflock name="#instance._hash#.registerappender.#name#" type="exclusive" throwontimeout="true" timeout="30"> 
    127167                                <cfscript> 
    128168                                        if( NOT appenderExists(name) ){ 
     
    151191                <!--- ************************************************************* ---> 
    152192                <cfscript> 
    153                         // Create Logger? 
    154                         var target = createObject("component",arguments.class).init(argumentCollection=arguments); 
     193                        // Create new appender object 
     194                        var appender = createObject("component",arguments.class).init(argumentCollection=arguments); 
    155195                         
    156196                        // Register it 
    157                         register(target); 
    158                          
    159                         return target; 
     197                        register(appender); 
     198                         
     199                        return appender; 
    160200                </cfscript>              
    161201        </cffunction> 
     
    169209                <cfif appenderExists(arguments.name)> 
    170210                        <cfscript> 
    171                                 // Get logger 
    172                                 appender = structFind(allAppenders, arguments.name);                     
     211                                // Get Appender 
     212                                appender = getAppender(arguments.name);                  
    173213                                // Run un-registration event 
    174214                                appender.onUnRegistration(); 
    175215                                // Unregister it 
    176                                 allAppenders.remove(arguments.name);     
     216                                removeAppender(arguments.name);  
    177217                                                         
    178218                                return true; 
     
    191231                        var args = structnew(); 
    192232                        var config = getConfig(); 
    193                         var appenders = getCategoryAppenders(); 
     233                        var categoryAppenders = getCategoryAppenders(); 
    194234                        var categoryConfig = "";         
    195235                                         
     
    202242                                args.levelMin = categoryConfig.levelMin; 
    203243                                args.levelMax = categoryConfig.levelMax; 
    204                                 // Get Appenders from storage map 
    205                                 args.appenders = appenders[arguments.category]; 
     244                                // Get Appenders from category storage map 
     245                                args.appenders = categoryAppenders[arguments.category]; 
    206246                        } 
    207247                         
     
    285325<!------------------------------------------- PRIVATE ------------------------------------------> 
    286326         
    287         <!--- configure ---> 
    288         <cffunction name="configure" output="false" access="private" returntype="void" hint="Configure logbox for operation"> 
    289                 <cfscript> 
    290                         var config = getConfig(); 
    291                         var appenders = config.getAppenders(); 
    292                         var key = ""; 
    293                         var categories = config.getCategories(); 
    294                          
    295                         // Register All Appenders configured 
    296                         for( key in appenders ){ 
    297                                 registerNew(argumentCollection=appenders[key]); 
    298                         } 
    299                         // Clean just in case 
    300                         key = ""; 
    301                         // Register All Category Appenders defined in the configuration object. 
    302                         for( key in categories ){ 
    303                                 instance.categoryAppenders[key] = getAppendersMap(categories[key].appenders); 
    304                         } 
    305                 </cfscript> 
    306         </cffunction> 
    307          
    308327        <!--- getAppendersMap ---> 
    309         <cffunction name="getAppendersMap" output="false" access="private" returntype="struct" hint="Get a map of appenders by list"> 
     328        <cffunction name="getAppendersMap" output="false" access="private" returntype="struct" hint="Get a map of appenders by list. Usually called to get a category of appenders."> 
    310329                <cfargument name="appenders" type="string" required="true" hint="The list of appenders to get"/> 
    311330                <cfscript> 
    312331                        var x =1; 
    313                         var appenders = getAppenders(); 
    314332                        var Collections = createObject("java", "java.util.Collections"); 
    315                         var map = Collections.synchronizedMap(CreateObject("java","java.util.LinkedHashMap").init(listlen(arguments.appenders))); 
    316                          
     333                        var appendersMap = Collections.synchronizedMap(CreateObject("java","java.util.LinkedHashMap").init(listlen(arguments.appenders))); 
     334                         
     335                        // Go over appender's list and configure it 
    317336                        for(x=1; x lte listlen(arguments.appenders); x=x+1){ 
    318                                 thisAppender = listGetAt(arguments.appenders,x); 
    319                                 map[thisAppender] = appenders[thisAppender];     
    320                         } 
    321                          
    322                         return map; 
     337                                thisAppender = ucase(listGetAt(arguments.appenders,x)); 
     338                                appendersMap[thisAppender] = getAppender(thisAppender);  
     339                        } 
     340                         
     341                        return appendersMap; 
    323342                </cfscript> 
    324343        </cffunction> 
  • coldbox/trunk/system/logging/config/LogBoxConfig.cfc

    r2363 r2364  
    3535                <cfargument name="levelMax"     type="numeric" required="false" default="5" hint="The default log level for this appender, by default it is 5. Optional. ex: LogBox.logLevels.WARNING"/> 
    3636                <cfargument name="properties"   type="struct"  required="false" default="#structnew()#" hint="The structure of properties to configure this appender with."/> 
    37                 <cfset instance.appenders[arguments.name] = arguments> 
     37                <cfset instance.appenders[ucase(arguments.name)] = arguments> 
    3838        </cffunction> 
    3939         
     
    4747                        var x = 1; 
    4848                         
     49                        //Verify appender list 
     50                        if( NOT listLen(arguments.appenders) ){ 
     51                                $throw("Invalid Appenders","Please send in at least one appender for a category","LogBoxConfig.InvalidAppenders"); 
     52                        } 
     53                         
    4954                        // Verify Appenders first 
    5055                        for(x=1; x lte listlen(arguments.appenders); x=x+1){ 
    51                                 if( NOT structKeyExists(instance.appenders, listGetAt(arguments.appenders,x)) ){ 
     56                                if( NOT structKeyExists(instance.appenders, ucase(listGetAt(arguments.appenders,x))) ){ 
    5257                                        $throw(message="Invalid appender", 
    5358                                                   detail="The appender #listGetAt(arguments.appenders,x)# has not been defined yet. Please define it first.", 
  • coldbox/trunk/testing/cases/logging/LogBoxVariousTest.cfc

    r2363 r2364  
    22<cfscript> 
    33        function setup(){ 
     4                // Create logbox config 
    45                config = createObject("component","coldbox.system.logging.config.LogBoxConfig").init(); 
     6                // Configure two appenders 
    57                config.addAppender(name="CFConsole",class="coldbox.system.logging.appenders.ConsoleAppender"); 
    6                 config.addAppender(name="DBConsole",class="coldbox.system.logging.appenders.DBAppender", 
    7                                                    levelMin="0",levelMax="1", 
    8                                                    properties={dsn="test",table="logs",autocreate="true",defaultCategory=""}); 
     8                config.addAppender(name="MyCF",class="coldbox.system.logging.appenders.CFAppender"); 
    99                 
     10                //Create some nice categories 
     11                config.addCategory(name="coldbox.testing.VariousTests",levelMin=3,appenders="CFConsole"); 
     12                config.addCategory(name="MyCat",levelMin=3,appenders="cfconsole"); 
     13                 
     14                //create logbox 
    1015                logbox = getMockBox().createMock(className="coldbox.system.logging.LogBox").init(config); 
    1116                 
     
    1318         
    1419        function test1(){ 
    15                 logBox.info(message="Hola Henrik"); 
     20                //Log to all appenders 
     21                logBox.info(message="Hola from various testing."); 
     22                 
     23                logger = logBox.getLogger("Mycat"); 
     24                logger.trace("just an error message"); 
     25                 
     26                 
    1627        } 
    1728</cfscript>