Это не то, что я широко использовал, но, похоже, оно работает (только Tcl 8.6+):
Вам нужен пакет преобразования канала tcl::transform::observe
:
package require tcl::transform::observe
Откройте файл журнала для записи и установите для буферизации значение none:
set f [open log.txt w]
chan configure $f -buffering none
Зарегистрируйте stdout
в качестве получателя:
set c [::tcl::transform::observe $f stdout {}]
Все, что будет записано в канал $c
, теперь попадет и в лог-файл, и в stdout
.
puts $c foobar
Обратите внимание, что было бы более разумно иметь преобразование канала поверх stdout
, с каналом в файл журнала в качестве получателя, но я не смог заставить это работать.
Документация: chan, open, пакет, путы, set, tcl::transform::observe (package)< /а>
person
Peter Lewerin
schedule
20.09.2016