/// <summary> /// Get log infos. /// </summary> /// <param name="serviceType">The given servicetype.</param> /// <param name="date">The date.</param> /// <param name="user">The user</param> /// <param name="logLevel">The loglevel</param> public void GetLogInfos(EServiceType serviceType, string date, string user, string logLevel) { var name = user + Defaults.BusinessLogFileSplitChar + logLevel + Defaults.BusinessLogFileSplitChar + date; var directoryInfo = new DirectoryInfo(Defaults.RootDirectory + serviceType.ToString()); var file = directoryInfo.GetFiles().FirstOrDefault(zw => zw.Name.StartsWith(name)); //for files. if (file != null) { File.Copy(file.FullName, file.FullName + "copy"); var lines = File.ReadAllLines(file.FullName + "copy", Encoding.Default); File.Delete(file.FullName + "copy"); var thisCallback = OperationContext.Current.GetCallbackChannel <IMessageCallback>(); Task t = new Task(() => { Thread.Sleep(1000); StringBuilder sb = new StringBuilder(""); foreach (var line in lines) { if (Regex.Match(line, "^\\d{4}-\\d{2}-\\d{2}").Success) { if (sb.ToString() != string.Empty) { thisCallback.NotifyLogInfo(sb.ToString()); sb.Clear(); } } sb.Append(line); sb.AppendLine(); } }); t.Start(); } }
/// <summary> /// Get loginfo dates. /// </summary> /// <param name="serviceType">The given servicetype.</param> /// <returns>return the loginfo list.</returns> public IEnumerable <LogInfo> GetLogInfoDates(EServiceType serviceType) { var list = new List <LogInfo>(); string logPath = Path.Combine(Defaults.RootDirectory, serviceType.ToString()); if (!Directory.Exists(logPath)) { return(list); } foreach (var item in new DirectoryInfo(logPath).GetFiles("*.txt")) { var fileNameSpliteItems = item.Name.Split(new string[] { Defaults.BusinessLogFileSplitChar, ".txt" }, StringSplitOptions.RemoveEmptyEntries); if (fileNameSpliteItems != null && fileNameSpliteItems.Length == 3) { var sellerAccountLogLevel = new UserLogLevel() { User = fileNameSpliteItems[0], LogLevel = fileNameSpliteItems[1] }; var date = list.FirstOrDefault(zw => zw.DateString == fileNameSpliteItems[2]); if (date == null) //日期 { list.Add(new LogInfo() { DateString = fileNameSpliteItems[2], UserLogLevels = new List <UserLogLevel>() { sellerAccountLogLevel } }); } else { date.UserLogLevels.Add(sellerAccountLogLevel); } } } return(list.OrderByDescending(zw => zw.DateString).ToList()); }