source: tol/tolsh/tolsh.vfs/lib/tcllib1.10/log/loggerAppender.tcl @ 8597867d

1941-docker-image-to-testdevel
Last change on this file since 8597867d was 8597867d, checked in by Jorge Pérez <josp.jorge@…>, 16 years ago

closes #976, se incluye tcllib1.10, base64 debe eliminarse del raiz de lib ya que esta incluido en tcllib

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@2556 be4846ae-f051-483a-831f-b64e7d08527f

  • Property mode set to 100644
File size: 10.1 KB
Line 
1##Library Header
2#
3# $Id: loggerAppender.tcl,v 1.4 2007/02/08 22:09:54 mic42 Exp $
4# Copyright (c) 2005 Cisco Systems, Inc.
5#
6# Name:
7#       ::logger::appender
8#
9# Purpose:
10#       collection of appenders for tcllib logger
11#
12# Author:
13#        Aamer Akhter / aakhter@cisco.com
14#
15# Support Alias:
16#       aakhter@cisco.com
17#
18# Usage:
19#       package require logger::appender
20#
21# Description:
22#       set of logger templates
23#     
24# Requirements:
25#       package require logger
26#       package require md5
27#
28# Variables:
29#       namespace   ::loggerExtension::
30#       id:         CVS ID: keyword extraction
31#       version:    current version of package
32#       packageDir: directory where package is located
33#       log:        instance log
34#
35# Notes:
36#       1.     
37#
38# Keywords:
39#       
40#
41# Category:
42#       
43#
44# End of Header
45
46package require md5
47
48namespace eval ::logger::appender {
49    variable  fgcolor
50    array set fgcolor {
51        red      {31m}
52        red-bold {1;31m}
53        black    {m}
54        blue     {1m}
55        green    {32m}
56        yellow   {33m}
57        cyan     {36m}
58    }
59
60    variable  levelToColor
61    array set levelToColor {
62        debug     cyan
63        info      blue
64        notice    black
65        warn      red
66        error     red
67        critical  red-bold
68        alert     red-bold
69        emergency red-bold
70    }
71}
72
73
74
75##Procedure Header
76# $Id: loggerAppender.tcl,v 1.4 2007/02/08 22:09:54 mic42 Exp $
77# Copyright (c) 2005 Cisco Systems, Inc.
78#
79# Name:
80#       ::logger::appender::console
81#
82# Purpose:
83#       
84#
85# Synopsis:
86#       ::logger::appender::console -level <level> -service <service> [options]
87#
88# Arguments:
89#       -level <level>
90#            name of level to fill in as 'priority' in log proc
91#       -service <service>
92#            name of service to fill in as 'category' in log proc
93#       -appenderArgs <appenderArgs>
94#            any additional args in list form
95#       -conversionPattern <conversionPattern>
96#            log pattern to use (see genLogProc)
97#       -procName <procName>
98#            explicitly set the proc name
99#       -procNameVar <procNameVar>
100#            name of variable to set in the calling context
101#            variable has name of proc
102#
103#
104# Return Values:
105#       a runnable command
106#
107# Description:
108#         
109#
110# Examples:
111#       
112#
113# Notes:
114#       1.
115#
116# End of Procedure Header
117
118
119proc ::logger::appender::console {args} {
120    set usage {console
121        ?-level level?
122        ?-service service?
123        ?-appenderArgs appenderArgs?
124    }
125    set bargs $args
126    set conversionPattern {\[%d\] \[%c\] \[%M\] \[%p\] %m}
127    while {[llength $args] > 1} {
128        set opt [lindex $args 0]
129        set args [lrange $args 1 end]
130        switch  -exact -- $opt {
131            -level { set level [lindex $args 0]
132                set args [lrange $args 1 end]
133            }
134            -service { set service [lindex $args 0]
135                set args [lrange $args 1 end]
136            }
137            -appenderArgs {
138                set appenderArgs [lindex $args 0]
139                set args [lrange $args 1 end]
140                set args [concat $args $appenderArgs]
141            }
142            -conversionPattern {
143                set conversionPattern [lindex $args 0]
144                set args [lrange $args 1 end]
145            }
146            -procName {
147                set procName [lindex $args 0]
148                set args [lrange $args 1 end]
149            }
150            -procNameVar {
151                set procNameVar [lindex $args 0]
152                set args [lrange $args 1 end]
153            }
154            default {
155                return -code error [msgcat::mc "Unknown argument: \"%s\" :\nUsage:\
156                %s" $opt $usage]
157            }
158        }
159    }
160    if {![info exists procName]} {
161        set procName [genProcName $bargs]
162    }
163    if {[info exists procNameVar]} {
164        upvar $procNameVar myProcNameVar
165    }
166    set procText \
167        [ ::logger::utils::createLogProc \
168              -procName $procName \
169              -conversionPattern $conversionPattern \
170              -category $service \
171              -priority $level ]
172    set myProcNameVar $procName
173    return $procText
174}
175
176
177
178##Procedure Header
179# $Id: loggerAppender.tcl,v 1.4 2007/02/08 22:09:54 mic42 Exp $
180# Copyright (c) 2005 Cisco Systems, Inc.
181#
182# Name:
183#       ::logger::appender::colorConsole
184#
185# Purpose:
186#       
187#
188# Synopsis:
189#       ::logger::appender::console -level <level> -service <service> [options]
190#
191# Arguments:
192#       -level <level>
193#            name of level to fill in as 'priority' in log proc
194#       -service <service>
195#            name of service to fill in as 'category' in log proc
196#       -appenderArgs <appenderArgs>
197#            any additional args in list form
198#       -conversionPattern <conversionPattern>
199#            log pattern to use (see genLogProc)
200#       -procName <procName>
201#            explicitly set the proc name
202#       -procNameVar <procNameVar>
203#            name of variable to set in the calling context
204#            variable has name of proc
205#
206#
207# Return Values:
208#       a runnable command
209#
210# Description:
211#       provides colorized logs
212#
213# Examples:
214#       
215#
216# Notes:
217#       1.
218#
219# End of Procedure Header
220
221
222proc ::logger::appender::colorConsole {args} {
223    variable fgcolor
224    set usage {console
225        ?-level level?
226        ?-service service?
227        ?-appenderArgs appenderArgs?
228    }
229    set bargs $args
230    set conversionPattern {\[%d\] \[%c\] \[%M\] \[%p\] %m}
231    upvar 0 ::logger::appender::levelToColor colorMap
232    while {[llength $args] > 1} {
233        set opt [lindex $args 0]
234        set args [lrange $args 1 end]
235        switch  -exact -- $opt {
236            -level { set level [lindex $args 0]
237                set args [lrange $args 1 end]
238            }
239            -service { set service [lindex $args 0]
240                set args [lrange $args 1 end]
241            }
242            -appenderArgs {
243                set appenderArgs [lindex $args 0]
244                set args [lrange $args 1 end]
245                set args [concat $args $appenderArgs]
246            }
247            -conversionPattern {
248                set conversionPattern [lindex $args 0]
249                set args [lrange $args 1 end]
250            }
251            -procName {
252                set procName [lindex $args 0]
253                set args [lrange $args 1 end]
254            }
255            -procNameVar {
256                set procNameVar [lindex $args 0]
257                set args [lrange $args 1 end]
258            }
259            default {
260                return -code error [msgcat::mc "Unknown argument: \"%s\" :\nUsage:\
261                %s" $opt $usage]
262            }
263        }
264    }
265    if {![info exists procName]} {
266        set procName [genProcName $bargs]
267    }
268    upvar $procNameVar myProcNameVar
269    if {[info exists level]} {
270        #apply color
271        set colorCode $colorMap($level)
272        append newCPattern {\033\[} $fgcolor($colorCode) $conversionPattern {\033\[0m}
273        set conversionPattern $newCPattern
274    }
275    set procText \
276        [ ::logger::utils::createLogProc \
277              -procName $procName \
278              -conversionPattern $conversionPattern \
279              -category $service \
280              -priority $level ]
281    set myProcNameVar $procName
282    return $procText
283}
284
285##Procedure Header
286# $Id: loggerAppender.tcl,v 1.4 2007/02/08 22:09:54 mic42 Exp $
287# Copyright (c) 2005 Cisco Systems, Inc.
288#
289# Name:
290#       ::logger::appender::fileAppend
291#
292# Purpose:
293#
294#
295# Synopsis:
296#       ::logger::appender::fileAppend -level <level> -service <service> -outputChannel <channel> [options]
297#
298# Arguments:
299#       -level <level>
300#            name of level to fill in as 'priority' in log proc
301#       -service <service>
302#            name of service to fill in as 'category' in log proc
303#       -appenderArgs <appenderArgs>
304#            any additional args in list form
305#       -conversionPattern <conversionPattern>
306#            log pattern to use (see genLogProc)
307#       -procName <procName>
308#            explicitly set the proc name
309#       -procNameVar <procNameVar>
310#            name of variable to set in the calling context
311#            variable has name of proc
312#       -outputChannel <channel>
313#            name of output channel (eg stdout, file handle)
314#
315#
316# Return Values:
317#       a runnable command
318#
319# Description:
320#
321#
322# Examples:
323#
324#
325# Notes:
326#       1.
327#
328# End of Procedure Header
329
330
331proc ::logger::appender::fileAppend {args} {
332    set usage {console
333        ?-level level?
334        ?-service service?
335        ?-outputChannel channel?
336        ?-appenderArgs appenderArgs?
337    }
338    set bargs $args
339    set conversionPattern {\[%d\] \[%c\] \[%M\] \[%p\] %m}
340    while {[llength $args] > 1} {
341        set opt [lindex $args 0]
342        set args [lrange $args 1 end]
343        switch  -exact -- $opt {
344            -level { set level [lindex $args 0]
345                set args [lrange $args 1 end]
346            }
347            -service { set service [lindex $args 0]
348                set args [lrange $args 1 end]
349            }
350            -appenderArgs {
351                set appenderArgs [lindex $args 0]
352                set args [lrange $args 1 end]
353                set args [concat $args $appenderArgs]
354            }
355            -conversionPattern {
356                set conversionPattern [lindex $args 0]
357                set args [lrange $args 1 end]
358            }
359            -procName {
360                set procName [lindex $args 0]
361                set args [lrange $args 1 end]
362            }
363            -procNameVar {
364                set procNameVar [lindex $args 0]
365                set args [lrange $args 1 end]
366            }
367            -outputChannel {
368                set outputChannel [lindex $args 0]
369                set args [lrange $args 1 end]
370            }
371            default {
372                return -code error [msgcat::mc "Unknown argument: \"%s\" :\nUsage:\
373                         %s" $opt $usage]
374            }
375        }
376    }
377    if {![info exists procName]} {
378        set procName [genProcName $bargs]
379    }
380    if {[info exists procNameVar]} {
381        upvar $procNameVar myProcNameVar
382    }
383    set procText \
384        [ ::logger::utils::createLogProc \
385              -procName $procName \
386              -conversionPattern $conversionPattern \
387              -category $service \
388              -outputChannel $outputChannel \
389              -priority $level ]
390    set myProcNameVar $procName
391    return $procText
392}
393         
394
395
396
397##Internal Procedure Header
398# $Id: loggerAppender.tcl,v 1.4 2007/02/08 22:09:54 mic42 Exp $
399# Copyright (c) 2005 Cisco Systems, Inc.
400#
401# Name:
402#       ::logger::appender::genProcName
403#
404# Purpose:
405#       
406#
407# Synopsis:
408#       ::logger::appender::genProcName <args>
409#
410# Arguments:
411#       <formatString>
412#            string composed of formatting chars (see description)
413#
414#
415# Return Values:
416#       a runnable command
417#
418# Description:
419#         
420#
421# Examples:
422#       ::loggerExtension::new param1
423#       ::loggerExtension::new param2
424#       ::loggerExtension::new param3 <option1>
425#
426#
427# Sample Input:
428#       (Optional) Sample of input to the proc provided by its argument values.
429#
430# Sample Output:
431#       (Optional) For procs that output to files, provide
432#       sample of format of output produced.
433# Notes:
434#       1.
435#
436# End of Procedure Header
437
438
439proc ::logger::appender::genProcName {args} {
440    set name [md5::md5 -hex $args]
441    return "::logger::appender::logProc-$name"
442}
443
444
445package provide logger::appender 1.3
446
447# ;;; Local Variables: ***
448# ;;; mode: tcl ***
449# ;;; End: ***
Note: See TracBrowser for help on using the repository browser.