public void Parse() { // PC名を置換する this.ReplacePCName(); var log = this.LogReplacedPCName; int.TryParse( this.LogType, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out int detectedType); // ログメッセージタイプの文言を除去する log = LogMessageTypeExtensions.RemoveLogMessageType( detectedType, log, true); // ツールチップシンボル, ワールド名を除去する log = LogParser.RemoveTooltipSynbols(log); log = LogParser.RemoveWorldName(log); // ログを互換形式に変換する log = LogParser.FormatLogLine( detectedType, log); this.ParsedLog = log; }
private static void MigrateConfig( string file) { var buffer = new StringBuilder(); buffer.Append(File.ReadAllText(file, new UTF8Encoding(false))); var xdoc = XDocument.Parse(buffer.ToString()); var xelements = xdoc.Root.Elements(); if (xelements.Any(x => x.Name == nameof(GlobalLogFilters))) { var filtersParent = xelements .FirstOrDefault(x => x.Name == nameof(GlobalLogFilters)); var filters = filtersParent.Elements(); var typeNames = LogMessageTypeExtensions.GetNames(); // 消滅したLogTypeを削除する var toRemove = filters .Where(x => !typeNames.Contains(x.Attribute("Key").Value)) .ToArray(); foreach (var e in toRemove) { e.Remove(); } // 新しく増えたLogTypeを追加する var toAdd = typeNames .Where(x => !filters.Any(y => y.Attribute("Key").Value == x)); foreach (var key in toAdd) { var e = new XElement("Filter"); e.SetAttributeValue("Key", key); e.SetAttributeValue("Value", false); filtersParent.Add(e); } } File.WriteAllText(file, xdoc.ToString(), DefaultEncoding); }