public ActionResult Index(string SelectedLogFileName) { _basePath = Server.MapPath(@"~/App_Data/Logs"); var model = new IndexViewModel(); var logFileName = string.IsNullOrEmpty(SelectedLogFileName) ? string.Format("orchard-error-{0}.{1}.{2}.log", DateTime.Now.Year, DateTime.Now.Month.ToString().PadLeft(2, '0'), DateTime.Now.Day.ToString().PadLeft(2, '0')) : SelectedLogFileName; var fullLogFilePath = _basePath + "/" + logFileName; model.LogDate = logFileName; return View(GetModel(fullLogFilePath, model)); }
private IndexViewModel GetModel(string fileName, IndexViewModel model) { var errorLogsOnly = (from p in Directory.GetFiles(_basePath, "*.log") where p.IndexOf("orchard-error-") >= 0 select p.Substring(p.LastIndexOf('\\') + 1)) .OrderByDescending(x => x) .ToList(); var dates = errorLogsOnly.Select(logFile => new SelectListItem { Text = logFile, Value = logFile }).ToList(); model.Dates = dates; using (var stream = System.IO.File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { using (var reader = new StreamReader(stream)) { model.LogText = reader.ReadToEnd(); var regex = new Regex(@"([0-9]{4}-[0-9]{2}-[0-9]{2}\s[0-9]{2}:[0-9]{2}:[0-9]{2})"); var matches = regex.Split(model.LogText).Where(s => s != String.Empty).ToArray(); for (var i = 0; i < matches.Count(); i++) { model.LogItems.Insert(0, new LogItem { Date = matches[i], Text = matches[i + 1] }); i++; } } } return model; }
private IndexViewModel GetModel(string fileName, IndexViewModel model) { var dates = filenames.Select(logFile => new SelectListItem { Text = logFile, Value = logFile }).ToList(); model.Dates = dates; try { if (!string.IsNullOrEmpty(fileName)) using (var stream = System.IO.File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { using (var reader = new StreamReader(stream)) { model.LogText = reader.ReadToEnd(); var regex = new Regex(@"([0-9]{4}-[0-9]{2}-[0-9]{2}\s[0-9]{2}:[0-9]{2}:[0-9]{2})"); var matches = regex.Split(model.LogText).Where(s => s != String.Empty).ToArray(); for (var i = 0; i < matches.Count(); i++) { model.LogItems.Insert(0, new LogItem { Date = matches[i], Text = matches[i + 1] }); i++; } } } } catch { } return model; }