Esempio n. 1
0
        /// <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();
            }
        }
Esempio n. 2
0
        /// <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());
        }