我正在尋找一些Tcl代碼,它會複製puts命令發送到某個日誌文件的stdout。是的,可以改變所有呼叫以放入某個自定義功能。但我希望儘可能透明。 我有這樣的試驗代碼,但它並沒有真正的工作都順利:示例代碼使put日誌輸出
set pass_log_output "0"
rename puts _puts
proc puts { args } {
global pass_log_output
if {[info exists pass_log_output]} {
# There can be several cases:
# -nonewline parameter, stdout specified or not
set stdout_dest [ lsearch $args stdout ]
set nonewline [ lsearch $args -nonewline ]
if { $stdout_dest != -1 } {
log_low_level "" [lindex $args [expr $stdout_dest + 1]] ""
} elseif { $nonewline != -1 && [ llength $args ] > 1} {
log_low_level "" [lindex $args [expr $nonewline + 1]] ""
} else {
log_low_level "" [lindex $args 0] ""
}
}
if { [ catch { eval _puts $args } err ] } {
return -code error $err
}
}
log_low_level功能只是存儲在文件傳遞的字符串。 到目前爲止,我得到這個錯誤:
Tcl Interpreter Error: too many nested evaluations (infinite loop?)
就是這樣,這就是問題所在。謝謝。 – user1476056 2012-07-25 18:13:00