コード例 #1
0
ファイル: SQLiteLogger.cs プロジェクト: aquiris/unity-sqlite
 private static string PrepareMessage(LogPart[] parts)
 {
     _logBuilder.Clear();
     for (int index = 0; index < parts.Length; index++)
     {
         LogPart part = parts[index];
         Color   c    = part.color;
         _logBuilder.AppendFormat("<color=#{0:X2}{1:X2}{2:X2}>{3}</color>",
                                  LogPart.GetHex(c.r),
                                  LogPart.GetHex(c.g),
                                  LogPart.GetHex(c.b),
                                  part.message);
     }
     return(_logBuilder.ToString());
 }
コード例 #2
0
        private static void ReadSettings()
        {
            const int BufferSize = 128;

            using (var fileStream = File.OpenRead(_settingsPath))
                using (var streamReader = new StreamReader(fileStream, Encoding.UTF8, true, BufferSize))
                {
                    string line;
                    while ((line = streamReader.ReadLine()) != null)
                    {
                        LogPart part = ParseEnum <LogPart>(line);
                        _parts.Add(part);
                    }
                }
        }
コード例 #3
0
        public void Update()
        {
            using (trace.NewFrame)
            {
                CheckDisposed();

                if (Interlocked.CompareExchange(ref folderNeedsRescan, 0, 1) != 0)
                {
                    trace.Info("Folder will be rescaned. First, disposing existing parts");
                    foreach (var p in parts)
                    {
                        trace.Info("Disposing: {0}", p.Key);
                        p.Value.Dispose();
                    }
                    parts.Clear();
                    trace.Info("Scanning the folder and discovering new parts");
                    foreach (string fname in fileSystem.GetFiles(baseDirectory, rollingStrategy.InitialSearchFilter))
                    {
                        trace.Info("Found: {0}", fname);
                        LogPart part = new LogPart(this, Path.GetFileName(fname));
                        parts[part.DictionaryKey] = part;
                    }
                }

                var partsFailedToUpdate = new List <LogPart>();

                trace.Info("Updating parts");
                foreach (LogPart part in parts.Values)
                {
                    trace.Info("Handing {0}", part.DictionaryKey);
                    if (!part.Update())
                    {
                        trace.Info("The part is not valid anymore. Disposing it");
                        part.Dispose();
                        partsFailedToUpdate.Add(part);
                    }
                }

                if (partsFailedToUpdate.Count > 0)
                {
                    trace.Info("Removing parts that failed to update ({0})", partsFailedToUpdate.Count);
                    foreach (LogPart part in partsFailedToUpdate)
                    {
                        parts.Remove(part.DictionaryKey);
                    }
                }

                var orderedParts = new List <LogPart>(parts.Values);

                orderedParts.Sort(LogPartsComparer.Instance);

                using (trace.NewNamedFrame("Sorted log parts"))
                {
                    foreach (LogPart part in orderedParts)
                    {
                        trace.Info("Part '{0}'. First message time: {1}", part.DictionaryKey,
                                   part.FirstMessageTime);
                    }
                }

                concatStream.Update(orderedParts.Select(f => f.SimpleMedia.DataStream));
            }
        }