예제 #1
0
func work(configDir string) {

	log.Println("")
	log.Println(".... 开始执行 ....")

	log.Println("读取配置信息中...")
	// 读取配置文件
	configArr, err := tailMail.ReadConfig()
	if err != nil {
		log.Println(err)
	}

	// 读取进度文件
	progressMap, err := tailMail.ReadProgress()
	if err != nil {
		log.Println(err)
	}

	// 组装需要发送的信息数组
	var tailInfoMap map[string]tailMail.TailInfoEntity
	tailInfoMap = make(map[string]tailMail.TailInfoEntity, len(configArr.ConfigArr))
	for _, conf := range configArr.ConfigArr {

		fn := conf.FileName
		tailInfo := tailMail.TailInfoEntity{
			FileName:       fn,
			MonitorTime:    time.Now(),
			IncrementalTxt: new(bytes.Buffer), // 读取出来的增量内容
			MailBodyHtml:   new(bytes.Buffer), // 要发送的邮件内容正文body
			HasNewInfo:     true,              //是不是有新的需要发送的信息
			Config:         conf,
			LastFileSize:   progressMap.ProgressMap[fn],
			MailServer:     configArr.MailServer,
		}
		tailInfoMap[fn] = tailInfo
	}

	// 遍历每个配置文件,并处理数据
	for _, info := range tailInfoMap {
		log.Println("正在分析文件:", info.FileName)

		tailFileMail(&info, configDir)

		if info.HasNewInfo {
			log.Println("更新进度信息配置文件。")
			// 更新进度信息
			progressMap.ProgressMap[info.FileName] = info.LastFileSize

			err = tailMail.WriteProgress(&progressMap)
			if err != nil {
				log.Println("写进度配置文件异常:")
				log.Println(err)
			}
		}
	}
}
예제 #2
0
// 进度文件初始化测试
func saveProgressInfoInit() {

	progressArr := tailMail.TailProgressCollectionEntity{
		ProgressMap: map[string]int64{
			"E:\\tmp\\dnsdata\\auth.acc-2014-01-18-64.35.log": int64(0),
			"E:\\tmp\\dnsdata\\138.18.stdout-2014_01_22.log":  int64(0),
		},
	}

	err := tailMail.WriteProgress(&progressArr)
	if err != nil {
		fmt.Println(err)
	}
}