加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 02:01:45 所属栏目:Linux 来源:网络整理
导读:假设有一个文件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.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.txt?

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

解决方法

只需使用尾巴.它更了解您如何处理复杂的案例(您可以查看其来源).

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

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]
     }
  }
}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读