gpt4 book ai didi

linux - 如何在 TCL 中跟踪日志文件

转载 作者:IT王子 更新时间:2023-10-29 00:55:43 24 4
gpt4 key购买 nike

假设有一个文件 log.txt 并且某种类型的日志被永久地附加到它。

我想在 TCL 环境中跟踪那个文件。

我已经试过了,但没用。

set log [open log.txt a]

for { } { true } { update; after 1000 } {

# expected to get here the appended part
read $log

seek $log 0 end

}

是否可以通过相同的文件句柄 log 读取修改后的文件,或者我必须关闭并重新打开文件 log.txt

在 TCL 中是否有一种与 Linux 命令 tail -f 等价的命令?

最佳答案

只需使用tail。它比你更了解如何处理复杂的情况(你可以查看它的来源)。

在我的一个项目中,我有类似这样的东西来监视由专有工具生成的跟踪文件:

set fd [open [list | tail --follow=name --retry --lines 0 $opt(trace) 2>@1]]
chan event $fd readable [list FollowTrace $fd]

proc FollowTrace fd {
if {[gets $fd line] < 0} {
set code [catch {close $fd} err]
if {$code == 0} {
set ::result 0
} else {
puts stderr $err
set ::result 1
}
return
}

switch -regexp -matchvar parts -- $line {
{Tm_Session::Open.*FileName=([^,]+)} {
TryMakeLock [FullPathname [lindex $parts 1]]
}
{Tm_Session::Close.*FileName=([^,]+)} {
StartUpload [lindex $parts 1]
}
}
}

一般的想法是,您在给定文件上生成 tail,然后进入事件循环并逐行处理 tail 的输出。

关于linux - 如何在 TCL 中跟踪日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8302428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com