在创建新文件时,Golang会替换以前打开的文件

在创建新文件时,Golang会替换以前打开的文件,第1张

概述好的,我正在监视某个文件并对该文件进行一些tail -f分析. 但是,另一个应用程序具有特定的逻辑,它将在下一个日期甚至之前创建一个新文件. 我正在寻找一种方法来检测新创建的文件(主机是linux机器),然后不重新启动我当前的go服务来开始拖尾新创建的文件. 这是我当前拖尾“当前文件”的逻辑: func main(){ currentTime := time.Now().Local() 好的,我正在监视某个文件并对该文件进行一些tail -f分析.
但是,另一个应用程序具有特定的逻辑,它将在下一个日期甚至之前创建一个新文件.

我正在寻找一种方法来检测新创建的文件(主机是linux机器),然后不重新启动我当前的go服务来开始拖尾新创建的文件.

这是我当前拖尾“当前文件”的逻辑:

func main(){    currentTime := time.Now().Local()    currentfilename := strings.Replace(currentTime.Format("2006-01-02"),"-","",2)    newfilename := currentfilename + "_1111.log.txt"    //using github.com/hpcloud/tail for tail    t,err := tail.Tailfile("/var/log/"+newfilename,tail.Config{Follow: true,ReOpen: true})    for line := range t.lines {        //fmt.Println("line is:",line.Text)        //check do we have error insIDe new line        if strings.Contains(strings.Tolower(line.Text),"mfc"){            fmt.Println("MFC located: ",line.Text)            //Now send e-mail to all interested partIEs            //sendEmail(line.Text)        }    }    fmt.Println(err)}

当前文件而不是20161219_1111.log可以是20161219_2222.log或类似,并在第二天从20161220_1111.log等开始.

任何提示都是受欢迎的.

试试 github.com/fsnotify/fsnotify

一个简单的例子:

func newfileCheck() (newfilename chan string,err error) {    watcher,err := fsnotify.NewWatcher()    if err != nil {        // do some log        return    }    err = watcher.Watch("testDir")    if err != nil {        // do some log        return    }    newfilename = make(chan string)    // Process events    go func() {        for {            select {            case ev := <-watcher.Event:                log.Println("event:",ev)                newfilename <- ev.name // @R_403_4614@ path to the file            case err := <-watcher.Error:                log.Println("error:",err)            }        }    }()    return}func yourApp() {    newfilenameChan,err := newfileCheck()    if err != nil {        // err check    }    go func() {        for {            select {            case name := <-newfilenameChan:                // close the old one and read new file            }        }    }()}

更多细节,请参阅文档

总结

以上是内存溢出为你收集整理的在创建新文件时,Golang会替换以前打开的文件全部内容,希望文章能够帮你解决在创建新文件时,Golang会替换以前打开的文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1294195.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存