文件结构
/home/vagrant/gocode/gtail
├── go.mod
├── go.sum
├── log_watcher.go
├── main.go
└── playbooks
├── file_watcher
│ └── compile.json
└── session.yaml
log_watcher 的内容
package log_watcher
import (
"fmt"
"log"
"os"
"path/filepath"
)
type LogWatcher struct {
Pattern string
}
func (c *LogWatcher) tail() {
matches, err := filepath.Glob(c.Pattern)
if err != nil {
log.Fatal(err)
return
}
for k, v := range matches {
file_obj, err := os.Open(v)
if err != nil {
log.Fatal(err)
return
}
go func() {
buf := make([]byte, 1024)
for {
n, _ := file_obj.Read(buf)
if 0 == n {
break
}
fmt.Print(buf[:n])
}
}()
}
return
}
main.go
的内容
package main
import (
"fmt"
"log"
"os"
"github.com/urfave/cli"
"gtail/log_watcher"
)
func main() {
var pattern string
app := &cli.App{
Name: "gtail",
Usage: "golang tail",
Flags: []cli.Flag{
&cli.StringFlag{
Name: "pattern",
Usage: "language for the greeting",
Required: true,
Destination: &pattern,
},
},
Action: func(c *cli.Context) error {
if len(pattern) == 0 {
fmt.Printf("miss pattern\n")
return nil
}
var log_watcher = &LogWatcher{
Pattern: pattern,
}
log_watcher.tail()
},
}
err := app.Run(os.Args)
if err != nil {
log.Fatal(err)
}
}
为什么 build 的时候提示
can't load package: package gtail: found packages log_watcher (log_watcher.go) and main (main.go) in /home/vagrant/gocode/gtail
我另一个项目这么导包又成功了,感觉 golang 的导包真的玄学,
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.