/* 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 }