1 Star 5 Fork 1

A-涛/ps-log

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
main.go 1.50 KB
一键复制 编辑 原始数据 按行查看 历史
package main
import (
"fmt"
"log"
"os"
"time"
"gitee.com/xuesongtao/gotool/base"
"gitee.com/xuesongtao/gotool/xfile"
pslog "gitee.com/xuesongtao/ps-log"
)
func main() {
ps, _ := pslog.NewPsLog(pslog.WithCleanUpTime(time.Second))
defer ps.Close()
tmp := "log/test.log"
handler := &pslog.Handler{
CleanOffset: true,
Change: -1, // 每次都持久化 offset
// Tail: true, // 实时监听
// ExpireAt: pslog.NoExpire, // 文件句柄不过期
ExpireAt: time.Now().Add(5 * time.Second), // 文件句柄不过期
Targets: []*pslog.Target{
{
Content: " ",
Excludes: []string{},
To: []pslog.PsLogWriter{&pslog.Stdout{}},
},
},
}
if err := ps.Register(handler); err != nil {
panic(err)
}
closeCh := make(chan struct{})
go func() {
fh := xfile.NewFileHandle(tmp)
if err := fh.Initf(os.O_RDWR | os.O_APPEND | os.O_TRUNC); err != nil {
log.Println(err)
return
}
defer fh.Close()
for i := 0; i < 10; i++ {
time.Sleep(10 * time.Millisecond)
_, err := fh.AppendContent(time.Now().Format(base.DatetimeFmt+".000") + " " + fmt.Sprint(i) + "\n")
if err != nil {
log.Println("write err:", err)
}
}
// 防止很快就结束
time.Sleep(time.Minute)
close(closeCh)
}()
if err := ps.AddPaths(tmp); err != nil {
panic(err)
}
ticker := time.NewTicker(time.Second)
defer ticker.Stop()
for {
select {
case <-ticker.C:
ps.CronLogs()
case <-closeCh:
goto stopFor
}
}
stopFor:
log.Println(ps.List())
log.Println("end...")
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/xuesongtao/ps-log.git
git@gitee.com:xuesongtao/ps-log.git
xuesongtao
ps-log
ps-log
v1.0.25

搜索帮助

0d507c66 1850385 C8b1a773 1850385