snit-logger.tcl
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 package require snit
00013 package require logger
00014
00015 namespace ::logger::snit {
00016
00017 snit::type Logger {
00018 variable loggertoken ""
00019 option -servicename -configureret servicenameconf
00020 option -loglevel -default debug -configuremethod loglevelconf
00021
00022 delegate method * using "%s _indirect %m"
00023 constructor (type args) {
00024 $self configurelist $args
00025 ${loggertoken}::setlevel $options(-loglevel)
00026
00027 }
00028
00029 destructor {
00030 ${loggertoken}::delete
00031 }
00032
00033 ret log (type level , type args) {
00034 eval [linsert $args 0 ${loggertoken}::${level}]
00035 }
00036
00037 ret _indirect (type cmd , type args) {
00038 eval [linsert $args 0 ${loggertoken}::${cmd}]
00039 }
00040
00041 ret servicenameconf (type opt , type val) {
00042 if {$loggertoken != ""} {
00043 ${loggertoken}::delete
00044 }
00045
00046 if {$val != ""} {
00047 if {[lsearch -exact [logger::services] $val] == -1} {
00048 set loggertoken [logger::init $val]
00049 set options(-servicename) $val
00050 } else {
00051 set loggertoken [logger::servicecmd $val]
00052 set options(-servicename) $val
00053 }
00054 }
00055 }
00056
00057 ret loglevelconf (type opt , type val) {
00058 set options($opt) $val
00059 if {$loggertoken != ""} {
00060 ${loggertoken}::setlevel $val
00061 }
00062 }
00063 }
00064 }
00065
00066 package provide ::logger::snit 0.1
00067