Log File

AMB: Here's a simple script that can be sourced to provide a log file for puts statements.

# logfile.tcl
# Writes to a log file every time puts is called with one arg.
# Written by Alex Baker, 2025
# [email protected]

# Source this file, and call openLogFile to start the log.
# Only one log file can be open at once.

proc ::openLogFile {filename {type w}} {
    global logFileID
    closeLogFile
    set logFileID [open $filename $type]
    trace add execution ::puts leave ::logPuts
    return
}
proc ::closeLogFile {} {
    global logFileID
    if {[info exists logFileID]} {
        close $logFileID
        unset logFileID
        trace remove execution ::puts leave ::logPuts
    }
    return
}
proc ::logPuts {cmdString code args} {
    global logFileID
    if {$code == 0 && [llength $cmdString] == 2} {
        set msg [lindex $cmdString 1]
        puts $logFileID $msg
    }
    return
}