loggerAppender.tcl

Go to the documentation of this file.
00001 /* Library Header*/
00002 /* */
00003 /*  $Id: loggerAppender.tcl,v 1.4 2007/02/08 22:09:54 mic42 Exp $*/
00004 /*  Copyright (c) 2005 Cisco Systems, Inc.*/
00005 /* */
00006 /*  Name:*/
00007 /*  ::logger::appender*/
00008 /* */
00009 /*  Purpose:*/
00010 /*  collection of appenders for tcllib logger*/
00011 /* */
00012 /*  Author:*/
00013 /*   Aamer Akhter / aakhter@cisco.com*/
00014 /* */
00015 /*  Support Alias:*/
00016 /*        aakhter@cisco.com*/
00017 /* */
00018 /*  Usage:*/
00019 /*  package require logger::appender*/
00020 /* */
00021 /*  Description:*/
00022 /*  set of logger templates*/
00023 /*       */
00024 /*  Requirements:*/
00025 /*        package require logger*/
00026 /*        package require md5*/
00027 /* */
00028 /*  Variables:*/
00029 /*        namespace   ::loggerExtension::*/
00030 /*        id:         CVS ID: keyword extraction*/
00031 /*        version:    current version of package*/
00032 /*        packageDir: directory where package is located*/
00033 /*        log:        instance log*/
00034 /* */
00035 /*  Notes:*/
00036 /*        1.    */
00037 /* */
00038 /*  Keywords:*/
00039 /*  */
00040 /* */
00041 /*  Category: */
00042 /*        */
00043 /* */
00044 /*  End of Header*/
00045 
00046 package require md5
00047 
00048 namespace ::logger::appender {
00049     variable  fgcolor
00050     array  fgcolor =  {
00051     red      {31m}
00052     red-bold {1;31m}
00053     black    {m}
00054     blue     {1m}
00055     green    {32m}
00056     yellow   {33m}
00057     cyan     {36m}
00058     }
00059 
00060     variable  levelToColor
00061     array  levelToColor =  {
00062     debug     cyan
00063     info      blue
00064     notice    black
00065     warn      red
00066     error     red
00067     critical  red-bold
00068     alert     red-bold
00069     emergency red-bold
00070     }
00071 }
00072 
00073 
00074 
00075 /* Procedure Header*/
00076 /*  $Id: loggerAppender.tcl,v 1.4 2007/02/08 22:09:54 mic42 Exp $*/
00077 /*  Copyright (c) 2005 Cisco Systems, Inc.*/
00078 /* */
00079 /*  Name:*/
00080 /*  ::logger::appender::console*/
00081 /* */
00082 /*  Purpose:*/
00083 /*   */
00084 /* */
00085 /*  Synopsis:*/
00086 /*        ::logger::appender::console -level <level> -service <service> [options]*/
00087 /* */
00088 /*  Arguments:*/
00089 /*        -level <level>*/
00090 /*             name of level to fill in as 'priority' in log proc*/
00091 /*        -service <service>*/
00092 /*             name of service to fill in as 'category' in log proc*/
00093 /*        -appenderArgs <appenderArgs>*/
00094 /*             any additional args in list form*/
00095 /*        -conversionPattern <conversionPattern>*/
00096 /*             log pattern to use (see genLogProc)*/
00097 /*        -procName <procName>*/
00098 /*             explicitly set the proc name*/
00099 /*        -procNameVar <procNameVar>*/
00100 /*             name of variable to set in the calling context*/
00101 /*             variable has name of proc */
00102 /* */
00103 /* */
00104 /*  Return Values:*/
00105 /*  a runnable command */
00106 /* */
00107 /*  Description:*/
00108 /*          */
00109 /* */
00110 /*  Examples:*/
00111 /*  */
00112 /* */
00113 /*  Notes:*/
00114 /*  1.*/
00115 /* */
00116 /*  End of Procedure Header */
00117 
00118 
00119 ret  ::logger::appender::console (type args) {
00120     set usage {console 
00121     ?-level level?
00122     ?-service service? 
00123     ?-appenderArgs appenderArgs?
00124     }
00125     set bargs $args
00126     set conversionPattern {\[%d\] \[%c\] \[%M\] \[%p\] %m}
00127     while {[llength $args] > 1} {
00128         set opt [lindex $args 0]
00129         set args [lrange $args 1 end]
00130         switch  -exact -- $opt {
00131             -level { set level [lindex $args 0]
00132         set args [lrange $args 1 end]
00133         }
00134         -service { set service [lindex $args 0]
00135         set args [lrange $args 1 end]
00136         }
00137         -appenderArgs {
00138         set appenderArgs [lindex $args 0]
00139         set args [lrange $args 1 end]
00140         set args [concat $args $appenderArgs]
00141         }
00142         -conversionPattern {
00143         set conversionPattern [lindex $args 0]
00144         set args [lrange $args 1 end]
00145         }
00146         -procName {
00147         set procName [lindex $args 0]
00148         set args [lrange $args 1 end]
00149         }
00150         -procNameVar {
00151         set procNameVar [lindex $args 0]
00152         set args [lrange $args 1 end]
00153         }
00154             default {
00155                 return -code error [msgcat::mc "Unknown argument: \"%s\" :\nUsage:\
00156                 %s" $opt $usage]
00157             }
00158         }
00159     }
00160     if {![info exists procName]} {
00161     set procName [genProcName $bargs]
00162     }
00163     if {[info exists procNameVar]} {
00164     upvar $procNameVar myProcNameVar
00165     }
00166     set procText \
00167     [ ::logger::utils::createLogProc \
00168           -procName $procName \
00169           -conversionPattern $conversionPattern \
00170           -category $service \
00171           -priority $level ]
00172     set myProcNameVar $procName
00173     return $procText
00174 }
00175 
00176 
00177 
00178 /* Procedure Header*/
00179 /*  $Id: loggerAppender.tcl,v 1.4 2007/02/08 22:09:54 mic42 Exp $*/
00180 /*  Copyright (c) 2005 Cisco Systems, Inc.*/
00181 /* */
00182 /*  Name:*/
00183 /*  ::logger::appender::colorConsole*/
00184 /* */
00185 /*  Purpose:*/
00186 /*   */
00187 /* */
00188 /*  Synopsis:*/
00189 /*        ::logger::appender::console -level <level> -service <service> [options]*/
00190 /* */
00191 /*  Arguments:*/
00192 /*        -level <level>*/
00193 /*             name of level to fill in as 'priority' in log proc*/
00194 /*        -service <service>*/
00195 /*             name of service to fill in as 'category' in log proc*/
00196 /*        -appenderArgs <appenderArgs>*/
00197 /*             any additional args in list form*/
00198 /*        -conversionPattern <conversionPattern>*/
00199 /*             log pattern to use (see genLogProc)*/
00200 /*        -procName <procName>*/
00201 /*             explicitly set the proc name*/
00202 /*        -procNameVar <procNameVar>*/
00203 /*             name of variable to set in the calling context*/
00204 /*             variable has name of proc */
00205 /* */
00206 /* */
00207 /*  Return Values:*/
00208 /*  a runnable command */
00209 /* */
00210 /*  Description:*/
00211 /*        provides colorized logs*/
00212 /* */
00213 /*  Examples:*/
00214 /*  */
00215 /* */
00216 /*  Notes:*/
00217 /*  1.*/
00218 /* */
00219 /*  End of Procedure Header */
00220 
00221 
00222 ret  ::logger::appender::colorConsole (type args) {
00223     variable fgcolor
00224     set usage {console 
00225     ?-level level?
00226     ?-service service? 
00227     ?-appenderArgs appenderArgs?
00228     }
00229     set bargs $args
00230     set conversionPattern {\[%d\] \[%c\] \[%M\] \[%p\] %m}
00231     upvar 0 ::logger::appender::levelToColor colorMap
00232     while {[llength $args] > 1} {
00233         set opt [lindex $args 0]
00234         set args [lrange $args 1 end]
00235         switch  -exact -- $opt {
00236             -level { set level [lindex $args 0]
00237         set args [lrange $args 1 end]
00238         }
00239         -service { set service [lindex $args 0]
00240         set args [lrange $args 1 end]
00241         }
00242         -appenderArgs {
00243         set appenderArgs [lindex $args 0]
00244         set args [lrange $args 1 end]
00245         set args [concat $args $appenderArgs]
00246         }
00247         -conversionPattern {
00248         set conversionPattern [lindex $args 0]
00249         set args [lrange $args 1 end]
00250         }
00251         -procName {
00252         set procName [lindex $args 0]
00253         set args [lrange $args 1 end]
00254         }
00255         -procNameVar {
00256         set procNameVar [lindex $args 0]
00257         set args [lrange $args 1 end]
00258         }
00259             default {
00260                 return -code error [msgcat::mc "Unknown argument: \"%s\" :\nUsage:\
00261                 %s" $opt $usage]
00262             }
00263         }
00264     }
00265     if {![info exists procName]} {
00266     set procName [genProcName $bargs]
00267     }
00268     upvar $procNameVar myProcNameVar
00269     if {[info exists level]} {
00270     #apply color
00271     set colorCode $colorMap($level)
00272     append newCPattern {\033\[} $fgcolor($colorCode) $conversionPattern {\033\[0m}
00273     set conversionPattern $newCPattern
00274     }
00275     set procText \
00276     [ ::logger::utils::createLogProc \
00277           -procName $procName \
00278           -conversionPattern $conversionPattern \
00279           -category $service \
00280           -priority $level ]
00281     set myProcNameVar $procName
00282     return $procText
00283 }
00284 
00285 /* Procedure Header*/
00286 /*  $Id: loggerAppender.tcl,v 1.4 2007/02/08 22:09:54 mic42 Exp $*/
00287 /*  Copyright (c) 2005 Cisco Systems, Inc.*/
00288 /* */
00289 /*  Name:*/
00290 /*        ::logger::appender::fileAppend*/
00291 /* */
00292 /*  Purpose:*/
00293 /* */
00294 /* */
00295 /*  Synopsis:*/
00296 /*        ::logger::appender::fileAppend -level <level> -service <service> -outputChannel <channel> [options]*/
00297 /* */
00298 /*  Arguments:*/
00299 /*        -level <level>*/
00300 /*             name of level to fill in as 'priority' in log proc*/
00301 /*        -service <service>*/
00302 /*             name of service to fill in as 'category' in log proc*/
00303 /*        -appenderArgs <appenderArgs>*/
00304 /*             any additional args in list form*/
00305 /*        -conversionPattern <conversionPattern>*/
00306 /*             log pattern to use (see genLogProc)*/
00307 /*        -procName <procName>*/
00308 /*             explicitly set the proc name*/
00309 /*        -procNameVar <procNameVar>*/
00310 /*             name of variable to set in the calling context*/
00311 /*             variable has name of proc*/
00312 /*        -outputChannel <channel>*/
00313 /*             name of output channel (eg stdout, file handle)*/
00314 /* */
00315 /* */
00316 /*  Return Values:*/
00317 /*        a runnable command*/
00318 /* */
00319 /*  Description:*/
00320 /* */
00321 /* */
00322 /*  Examples:*/
00323 /* */
00324 /* */
00325 /*  Notes:*/
00326 /*        1.*/
00327 /* */
00328 /*  End of Procedure Header*/
00329 
00330 
00331 ret  ::logger::appender::fileAppend (type args) {
00332     set usage {console
00333     ?-level level?
00334     ?-service service?
00335     ?-outputChannel channel?
00336     ?-appenderArgs appenderArgs?
00337     }
00338     set bargs $args
00339     set conversionPattern {\[%d\] \[%c\] \[%M\] \[%p\] %m}
00340     while {[llength $args] > 1} {
00341     set opt [lindex $args 0]
00342     set args [lrange $args 1 end]
00343     switch  -exact -- $opt {
00344         -level { set level [lindex $args 0]
00345         set args [lrange $args 1 end]
00346         }
00347         -service { set service [lindex $args 0]
00348         set args [lrange $args 1 end]
00349         }
00350         -appenderArgs {
00351         set appenderArgs [lindex $args 0]
00352         set args [lrange $args 1 end]
00353         set args [concat $args $appenderArgs]
00354         }
00355         -conversionPattern {
00356         set conversionPattern [lindex $args 0]
00357         set args [lrange $args 1 end]
00358         }
00359         -procName {
00360         set procName [lindex $args 0]
00361         set args [lrange $args 1 end]
00362         }
00363         -procNameVar {
00364         set procNameVar [lindex $args 0]
00365         set args [lrange $args 1 end]
00366         }
00367         -outputChannel {
00368         set outputChannel [lindex $args 0]
00369         set args [lrange $args 1 end]
00370         }
00371         default {
00372         return -code error [msgcat::mc "Unknown argument: \"%s\" :\nUsage:\
00373                      %s" $opt $usage]
00374         }
00375     }
00376     }
00377     if {![info exists procName]} {
00378     set procName [genProcName $bargs]
00379     }
00380     if {[info exists procNameVar]} {
00381     upvar $procNameVar myProcNameVar
00382     }
00383     set procText \
00384     [ ::logger::utils::createLogProc \
00385           -procName $procName \
00386           -conversionPattern $conversionPattern \
00387           -category $service \
00388           -outputChannel $outputChannel \
00389           -priority $level ]
00390     set myProcNameVar $procName
00391     return $procText
00392 }
00393      
00394 
00395 
00396 
00397 /* Internal Procedure Header*/
00398 /*  $Id: loggerAppender.tcl,v 1.4 2007/02/08 22:09:54 mic42 Exp $*/
00399 /*  Copyright (c) 2005 Cisco Systems, Inc.*/
00400 /* */
00401 /*  Name:*/
00402 /*        ::logger::appender::genProcName*/
00403 /* */
00404 /*  Purpose:*/
00405 /*         */
00406 /* */
00407 /*  Synopsis:*/
00408 /*        ::logger::appender::genProcName <args>*/
00409 /* */
00410 /*  Arguments:*/
00411 /*        <formatString>*/
00412 /*             string composed of formatting chars (see description)*/
00413 /* */
00414 /* */
00415 /*  Return Values:*/
00416 /*        a runnable command */
00417 /* */
00418 /*  Description:*/
00419 /*          */
00420 /* */
00421 /*  Examples:*/
00422 /*        ::loggerExtension::new param1*/
00423 /*        ::loggerExtension::new param2*/
00424 /*        ::loggerExtension::new param3 <option1>*/
00425 /* */
00426 /* */
00427 /*  Sample Input:*/
00428 /*        (Optional) Sample of input to the proc provided by its argument values.*/
00429 /* */
00430 /*  Sample Output:*/
00431 /*        (Optional) For procs that output to files, provide */
00432 /*        sample of format of output produced.*/
00433 /*  Notes:*/
00434 /*        1.*/
00435 /* */
00436 /*  End of Procedure Header */
00437 
00438 
00439 ret  ::logger::appender::genProcName (type args) {
00440     set name [md5::md5 -hex $args]
00441     return "::logger::appender::logProc-$name"
00442 }
00443 
00444 
00445 package provide logger::appender 1.3
00446 
00447 /*  ;;; Local Variables: ****/
00448 /*  ;;; mode: tcl ****/
00449 /*  ;;; End: ****/
00450 

Generated on 21 Sep 2010 for Gui by  doxygen 1.6.1