static void Main(params string[] agrs) { DateTime start = DateTime.Now.AddDays(-10); DateTime end = DateTime.Now; int dayBefore = -7; if (agrs.Count() > 0) { if (!int.TryParse(agrs[0], out dayBefore)) { Console.WriteLine(nameof(agrs) + 0 + " invalid"); } } start = DateTime.Now.AddDays(dayBefore); int dayAfter = -7; if (agrs.Count() > 1) { if (!int.TryParse(agrs[1], out dayAfter)) { Console.WriteLine(nameof(agrs) + 0 + " invalid"); } } end = DateTime.Now.AddDays(dayAfter); string filePath = "ApiUseLog_" + DateTime.Now.ToString("yyyyMMddHHmmss"); if (agrs.Count() > 2) { filePath = agrs[2]; } var dal = new RequestLogRepository(ConfigurationManager.AppSettings["MongoAdr"], "RequestLog"); var userUsedAPIs = QueryUserUsedApis(dal, start, end); Console.WriteLine("Total dataapi users count " + userUsedAPIs.Count()); File.AppendAllLines($"{filePath}_dataapiUser.csv", userUsedAPIs); //dal = new RequestLogRepository(ConfigurationManager.AppSettings["MongoAdr"], "RequestLog_AdvancedAPI"); //userUsedAPIs = QueryUserUsedApis(dal); //Console.WriteLine("Total advancedapi users count " + userUsedAPIs.Count()); //File.AppendAllLines($"{filePath}_advancedapiUser.csv", userUsedAPIs); }
public static void Run() { var path = @"C:\Users\mpe\Desktop\requestlogs\"; var files = Directory.GetFiles(path, "*.log", SearchOption.AllDirectories); foreach (var file in files) { var repo = new RequestLogRepository(path); var lines = repo.ReadLogRecords(2, Path.GetFileName(file)); var records = repo.ParseLines("RfProd", lines); int index = 0; int chunkSize = 256; while (true) { var chunk = records.Skip(index * chunkSize).Take(chunkSize); if (!chunk.Any()) { break; } var client = new RestClient("http://195.215.240.99:8080/api/RequestLogResult"); var request = new RestRequest(Method.POST); request.AddHeader("authorization", ""); request.AddHeader("content-type", "application/json"); request.AddParameter("application/json", JsonConvert.SerializeObject(chunk), ParameterType.RequestBody); IRestResponse response = client.Execute(request); index++; } } }
private static IEnumerable <string> QueryUserUsedApis(RequestLogRepository dal, DateTime start, DateTime end) { Dictionary <string, MyHashSet <string> > userUsedAPIs = new Dictionary <string, MyHashSet <string> >(); // string[] ids = new string[] { "AllData001", "AllData002", "AllData003", "NotExportData001", null }; string[] ids = new string[] { "E001", "E001A", "E001B", "E003" }; foreach (var id in ids) { int total = int.MaxValue; int count = 0; int index = 0; int size = 30000; Console.Write((id ?? "NotExportData000") + " count " + userUsedAPIs.Count + "\t"); do { var useLogs = dal.QueryLogByApiId(id, index++, size, out total, start, end); count += useLogs.Count; var users = useLogs.Select(log => log.UserId).Distinct(); foreach (var u in users) { if (!userUsedAPIs.ContainsKey(u)) { userUsedAPIs.Add(u, new MyHashSet <string>()); } } foreach (var ul in useLogs) { userUsedAPIs[ul.UserId].Add(id); } Console.Write($"{100F * count / total}% {userUsedAPIs.Count}\t"); } while (count < total); Console.WriteLine(); } return(userUsedAPIs.Select(uua => uua.Key + "," + uua.Value.ToString())); }
public RequestLogService() { _repository = new RequestLogRepository(); }
public RequestLoggingHandler() { this.repo = new RequestLogRepository(); }