xotcl-logger.tcl
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 package require XOTcl
00013 package require logger
00014
00015 namespace ::logger::xotcl {
00016
00017 ::xotcl::Class Logger -parameter { {servicename -ter = _servicenameter =
00018 -getter _servicenamegetter}
00019 {loglevel debug -ter = _loglevelter =
00020 -getter _loglevelgetter}}
00021
00022 Logger instret init (type args) {
00023 ::xotcl::next
00024 }
00025
00026 Logger instret destroy (type args) {
00027 [::xotcl::my set loggertoken]::delete
00028 ::xotcl::next
00029 }
00030
00031 Logger instret log (type level , type args) {
00032 eval [linsert $args 0 [::xotcl::my set loggertoken]::${level}]
00033 }
00034
00035 Logger instret _servicenamesetter (type opt , type val) {
00036 puts "Servicesetter: $opt / $val"
00037 if {[llength [::xotcl::my info vars loggertoken]]} {
00038 if {[::xotcl::my set loggertoken] != ""} {
00039 [::xotcl::my set loggertoken]::delete
00040 }
00041 } else {
00042 ::xotcl::my set loggertoken ""
00043 }
00044
00045 if {$val != ""} {
00046 if {[lsearch -exact [logger::services] $val] == -1} {
00047 ::xotcl::my set loggertoken [logger::init $val]
00048 ::xotcl::my set servicename $val
00049 } else {
00050 ::xotcl::my set loggertoken [logger::servicecmd $val]
00051 ::xotcl::my set servicename $val
00052 }
00053
00054 if {[llength [::xotcl::my info vars loglevel]]} {
00055 [::xotcl::my set loggertoken]::setlevel [::xotcl::my set loglevel]
00056 }
00057 }
00058 puts "Token set to [::xotcl::my set loggertoken]"
00059 return $val
00060 }
00061
00062 Logger instret _servicenamegetter (type opt) {
00063 return [::xotcl::my set servicename]
00064 }
00065
00066 Logger instret _loglevelsetter (type opt , type val) {
00067 puts "Loglevel: $opt / $val"
00068 if {[::xotcl::my set loggertoken] ne ""} {
00069 puts "Setting loglevel for loggertoken [::xotcl::my set loggertoken] to $val"
00070 [::xotcl::my set loggertoken]::setlevel $val
00071 }
00072 ::xotcl::my set loglevel $val
00073 }
00074
00075 Logger instret _loglevelgetter (type opt) {
00076 if {[::xotcl::my set loggertoken] ne ""} {
00077 return [[::xotcl::my set loggertoken]::currentloglevel]
00078 } else {
00079 return
00080 }
00081 }
00082
00083 Logger instret logproc (type args) {
00084 eval [linsert $args 0 [::xotcl::my set loggertoken]::logproc]
00085 }
00086
00087 Logger instret services () {
00088 return [[::xotcl::my set loggertoken]::services]
00089 }
00090
00091 Logger instret delproc (type args) {
00092 eval [linsert $args 0 [::xotcl::my set loggertoken]::delproc]
00093 }
00094
00095 }
00096
00097 package provide ::logger::xotcl 0.1
00098