12 Star 53 Fork 16

qieangel2013 / goMonitorLog

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
main.go 2.17 KB
一键复制 编辑 原始数据 按行查看 历史
qieangel2013 提交于 2019-11-11 11:36 . 修复bug
package main
import (
"flag"
"github.com/hpcloud/tail"
"julive.com/handle"
"log"
"strings"
"time"
)
var configFile = flag.String("config", "./etc/log.toml", "log config file")
var currentDaysTime string
var currentHoursTime string
var hoursFile []string
var daysFile []string
func main() {
currentDaysTime = time.Now().Format("2006-01-02")
currentHoursTime = time.Now().Format("2006-01-02_01")
// 创建一个接受匹配上的字符串管道
var MonitorChan = make(chan handle.MonitorChan, 10)
TailDaysPointer := make(chan *tail.Tail, 10)
TailHoursPointer := make(chan *tail.Tail, 10)
FailPointer := make(chan handle.FileChan, 10)
cfg, err := handle.NewConfigWithFile(*configFile)
if err != nil {
log.Println("error:", err)
return
}
handle.LogStart(cfg)
go handle.BuildDicTrie(cfg)
for _, file := range cfg.LogList {
if strings.Contains(file, "$todayhourstr") {
hoursFile = append(hoursFile, file)
} else {
daysFile = append(daysFile, file)
}
}
go handle.AddToDaysMonitor(daysFile, cfg, MonitorChan, TailDaysPointer, FailPointer)
if len(hoursFile) != 0 {
go handle.AddToHoursMonitor(hoursFile, cfg, MonitorChan, TailHoursPointer, FailPointer)
}
go func() {
for {
select {
//读取sqldata
case data := <-MonitorChan:
go func() {
handle.DingToInfo(&data, cfg)
}()
}
}
}()
timerActive := time.NewTimer(600 * time.Second)
for {
select {
case <-timerActive.C:
if len(hoursFile) != 0 {
timerCurrentHoursTime := time.Now().Format("2006-01-02_01")
if timerCurrentHoursTime != currentHoursTime {
if handle.CloseMonitor(TailHoursPointer) {
currentHoursTime = timerCurrentHoursTime
go handle.AddToHoursMonitor(hoursFile, cfg, MonitorChan, TailHoursPointer, FailPointer)
}
}
}
timerCurrentTime := time.Now().Format("2006-01-02")
if timerCurrentTime != currentDaysTime {
if handle.CloseMonitor(TailDaysPointer) {
currentDaysTime = timerCurrentTime
go handle.AddToDaysMonitor(daysFile, cfg, MonitorChan, TailDaysPointer, FailPointer)
}
}
go handle.ExcuteFailFile(cfg, MonitorChan, TailHoursPointer, TailDaysPointer, FailPointer)
timerActive.Reset(600 * time.Second)
}
}
}
Go
1
https://gitee.com/qieangel2013/goMonitorLog.git
git@gitee.com:qieangel2013/goMonitorLog.git
qieangel2013
goMonitorLog
goMonitorLog
master

搜索帮助