public void Parse(NginxLog ngingLog) { try { var time = ngingLog.Time.ToString("yyyyMMddHH"); // 有refer且是http开头 var isFront = (ngingLog.Referer != null && ngingLog.Referer.StartsWith("http", StringComparison.OrdinalIgnoreCase)) ? 1 : 0; var app = GetUriApp(ngingLog.Request); if (!IsKnownApp(app)) { app = "other"; } var identify = time + '\n' + isFront + '\n' + app; lock (groups) { groups.TryGetValue(identify, out var num); groups[identify] = num + 1; } } catch (Exception exp) { logger.Error(ngingLog.Filename + " " + exp); } }
public void Parse(NginxLog ngingLog) { try { nginxLogRepository.Save(ngingLog); } catch (Exception exp) { logger.Error(ngingLog.Filename + " " + exp); } }
private NginxLog ConvertToNginxLog(List <string> arrFields, string fileName) { var log = new NginxLog(); int tmp; double tmpd; log.Timelocal = arrFields[0]; // '时间', log.Remoteaddr = arrFields[1]; // 'ip', log.Remoteuser = arrFields[2]; // '用户', log.Host = arrFields[3]; // '主机', log.Request = arrFields[4]; // '请求方法和地址', int.TryParse(arrFields[5], out tmp); log.Status = tmp; // '响应状态', int.TryParse(arrFields[6], out tmp); log.Requestlength = tmp; // '请求长度', int.TryParse(arrFields[7], out tmp); log.Bodybytessent = tmp; // '发送长度', log.Referer = arrFields[8]; // 'referer', log.Useragent = arrFields[9]; // 'ua', log.Forwardedfor = arrFields[10]; // '代理ip', log.Upstreamaddr = arrFields[11]; // '后端ip+端口', double.TryParse(arrFields[12], out tmpd); log.Requesttime = (int)Math.Floor(tmpd * 1000); // '请求时长', double.TryParse(arrFields[13], out tmpd); log.Upstreamtime = (int)Math.Floor(tmpd * 1000); // '后端响应时长', int.TryParse(arrFields[14], out tmp); log.Upstreamstatus = tmp; // '后端状态', int.TryParse(arrFields[15], out tmp); log.Contentlength = tmp; // '内容长度', int.TryParse(arrFields[16], out tmp); log.Httpcontentlength = tmp; // 'http内容长', int.TryParse(arrFields[17], out tmp); log.Sentcontentlength = tmp; // '发送内容长', log.Filename = fileName; // '采集源文件', return(log); }
public void Parse(NginxLog ngingLog) { try { var time = ngingLog.Time.ToString("yyyyMMddHH"); var referer = GetUriPattern(ngingLog.Referer); if (!referer.StartsWith("http", StringComparison.OrdinalIgnoreCase)) { referer = "-"; // referer不应该没有http的 } var url = GetUriPattern(ngingLog.Request); var identify = time + '\n' + referer + '\n' + url; lock (groups) { groups.TryGetValue(identify, out var num); groups[identify] = num + 1; } } catch (Exception exp) { logger.Error(ngingLog.Filename + " " + exp); } }