예제 #1
0
        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);
        }
예제 #2
0
파일: Program.cs 프로젝트: kalabakas1/MPE
            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++;
                    }
                }
            }
예제 #3
0
        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()));
        }
예제 #4
0
 public RequestLogService()
 {
     _repository = new RequestLogRepository();
 }
예제 #5
0
 public RequestLogService()
 {
     _repository = new RequestLogRepository();
 }
예제 #6
0
 public RequestLoggingHandler()
 {
     this.repo = new RequestLogRepository();
 }