コード例 #1
0
ファイル: add.go プロジェクト: toxer/log4all
/*
	Convert a RawLog to models.Log
*/
func NewLogFromRawLog(rawLog *commonsLog.SingleLog) *models.Log {
	logResult := new(models.Log)
	logResult.Tags = make(map[string]interface{})
	logResult.Level = rawLog.Level
	logResult.Application = rawLog.Application
	logResult.Stack = rawLog.Stack
	//add dtInsert if is missing
	if rawLog.Date != 0 {
		logResult.Date = time.Unix(rawLog.Date/1000, 0)
	} else {
		logResult.Date = time.Now()
	}
	//extract tags from message
	rawTags := utils.AddLogMatcher().FindAllStringSubmatch(rawLog.Message, -1)
	for i := 0; i < len(rawTags); i++ {
		tagName := rawTags[i][1][1:]
		if len(rawTags[i][4]) > 0 {
			tagValue := rawTags[i][4]
			logResult.Tags[tagName] = strings.Replace(tagValue, "\"", "", -1)
		} else {
			logResult.Tags[tagName] = true
		}
	}

	//arrange message
	logResult.Message = strings.Replace(rawLog.Message, "##", "", -1)
	logResult.Message = utils.AddLogMatcher().ReplaceAllString(logResult.Message, "")

	return logResult
}