Skip to content

Commit 3cf86cf

Browse files
committed
regex columnizer fixes
1 parent 0a41675 commit 3cf86cf

8 files changed

Lines changed: 151 additions & 124 deletions

File tree

src/CsvColumnizer/CsvColumnizer.cs

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,10 @@ public string PreProcessLine (string logLine, int lineNum, int realLineNum)
6161
return null; // hide from LogExpert
6262
}
6363

64-
if (_config.CommentChar != ' ' && logLine.StartsWith("" + _config.CommentChar))
65-
{
66-
return null;
67-
}
68-
69-
return logLine;
64+
return _config.CommentChar != ' ' &&
65+
logLine.StartsWith("" + _config.CommentChar, StringComparison.OrdinalIgnoreCase)
66+
? null
67+
: logLine;
7068
}
7169

7270
public string GetName ()
@@ -105,12 +103,9 @@ public string[] GetColumnNames ()
105103

106104
public IColumnizedLogLine SplitLine (ILogLineColumnizerCallback callback, ILogLine line)
107105
{
108-
if (_isValidCsv)
109-
{
110-
return SplitCsvLine(line);
111-
}
112-
113-
return CreateColumnizedLogLine(line);
106+
return _isValidCsv
107+
? SplitCsvLine(line)
108+
: CreateColumnizedLogLine(line);
114109
}
115110

116111
private static ColumnizedLogLine CreateColumnizedLogLine (ILogLine line)
@@ -119,6 +114,7 @@ private static ColumnizedLogLine CreateColumnizedLogLine (ILogLine line)
119114
{
120115
LogLine = line
121116
};
117+
122118
cLogLine.ColumnValues = [new Column { FullValue = line.FullLine, Parent = cLogLine }];
123119
return cLogLine;
124120
}
@@ -153,13 +149,15 @@ public void Selected (ILogLineColumnizerCallback callback)
153149
if (_isValidCsv) // see PreProcessLine()
154150
{
155151
_columnList.Clear();
156-
var line = _config.HasFieldNames ? _firstLine : callback.GetLogLine(0);
152+
var line = _config.HasFieldNames
153+
? _firstLine
154+
: callback.GetLogLine(0);
157155

158156
if (line != null)
159157
{
160158
using CsvReader csv = new(new StringReader(line.FullLine), _config.ReaderConfiguration);
161-
csv.Read();
162-
csv.ReadHeader();
159+
_ = csv.Read();
160+
_ = csv.ReadHeader();
163161

164162
var fieldCount = csv.Parser.Count;
165163

@@ -229,7 +227,7 @@ public void LoadConfig (string configDir)
229227
}
230228
catch (Exception e)
231229
{
232-
MessageBox.Show($"Error while deserializing config data: {e.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
230+
_ = MessageBox.Show($"Error while deserializing config data: {e.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
233231
_config = new CsvColumnizerConfig();
234232
_config.InitDefaults();
235233
}
@@ -252,16 +250,16 @@ public Priority GetPriority (string fileName, IEnumerable<ILogLine> samples)
252250

253251
#region Private Methods
254252

255-
private IColumnizedLogLine SplitCsvLine (ILogLine line)
253+
private ColumnizedLogLine SplitCsvLine (ILogLine line)
256254
{
257255
ColumnizedLogLine cLogLine = new()
258256
{
259257
LogLine = line
260258
};
261259

262260
using CsvReader csv = new(new StringReader(line.FullLine), _config.ReaderConfiguration);
263-
csv.Read();
264-
csv.ReadHeader();
261+
_ = csv.Read();
262+
_ = csv.ReadHeader();
265263

266264
//we only read line by line and not the whole file so it is always the header
267265
var records = csv.HeaderRecord;
@@ -275,7 +273,7 @@ private IColumnizedLogLine SplitCsvLine (ILogLine line)
275273
columns.Add(new Column { FullValue = record, Parent = cLogLine });
276274
}
277275

278-
cLogLine.ColumnValues = columns.Select(a => a as IColumn).ToArray();
276+
cLogLine.ColumnValues = [.. columns.Select(a => a as IColumn)];
279277
}
280278

281279
return cLogLine;

src/GlassfishColumnizer/GlassfishColumnizer.cs

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
using System;
21
using System.Globalization;
3-
using System.Linq;
42

53
using ColumnizerLib;
64

@@ -73,21 +71,23 @@ public string[] GetColumnNames ()
7371

7472
public IColumnizedLogLine SplitLine (ILogLineColumnizerCallback callback, ILogLine line)
7573
{
76-
ColumnizedLogLine cLogLine = new();
77-
cLogLine.LogLine = line;
74+
ColumnizedLogLine cLogLine = new()
75+
{
76+
LogLine = line
77+
};
7878

7979
var temp = line.FullLine;
8080

8181
var columns = Column.CreateColumns(COLUMN_COUNT, cLogLine);
82-
cLogLine.ColumnValues = columns.Select(a => a as IColumn).ToArray();
82+
cLogLine.ColumnValues = [.. columns.Select(a => a as IColumn)];
8383

8484
// delete '[#|' and '|#]'
85-
if (temp.StartsWith("[#|"))
85+
if (temp.StartsWith("[#|", StringComparison.OrdinalIgnoreCase))
8686
{
8787
temp = temp[3..];
8888
}
8989

90-
if (temp.EndsWith("|#]"))
90+
if (temp.EndsWith("|#]", StringComparison.OrdinalIgnoreCase))
9191
{
9292
temp = temp[..^3];
9393
}
@@ -108,7 +108,7 @@ public IColumnizedLogLine SplitLine (ILogLineColumnizerCallback callback, ILogLi
108108
columns[1].FullValue = temp;
109109
}
110110

111-
var newDate = dateTime.ToString(DATETIME_FORMAT_OUT);
111+
var newDate = dateTime.ToString(DATETIME_FORMAT_OUT, CultureInfo.InvariantCulture);
112112
columns[0].FullValue = newDate;
113113
}
114114
catch (Exception)
@@ -156,12 +156,12 @@ public DateTime GetTimestamp (ILogLineColumnizerCallback callback, ILogLine logL
156156
var temp = logLine.FullLine;
157157

158158
// delete '[#|' and '|#]'
159-
if (temp.StartsWith("[#|"))
159+
if (temp.StartsWith("[#|", StringComparison.OrdinalIgnoreCase))
160160
{
161161
temp = temp[3..];
162162
}
163163

164-
if (temp.EndsWith("|#]"))
164+
if (temp.EndsWith("|#]", StringComparison.OrdinalIgnoreCase))
165165
{
166166
temp = temp[..^3];
167167
}
@@ -172,7 +172,7 @@ public DateTime GetTimestamp (ILogLineColumnizerCallback callback, ILogLine logL
172172
}
173173

174174
var endIndex = temp.IndexOf(separatorChar, 1);
175-
if (endIndex > 28 || endIndex < 0)
175+
if (endIndex is > 28 or < 0)
176176
{
177177
return DateTime.MinValue;
178178
}
@@ -182,12 +182,9 @@ public DateTime GetTimestamp (ILogLineColumnizerCallback callback, ILogLine logL
182182
try
183183
{
184184
// convert glassfish timestamp into a readable format:
185-
if (DateTime.TryParseExact(value, DATETIME_FORMAT, cultureInfo, DateTimeStyles.None, out var timestamp))
186-
{
187-
return timestamp.AddMilliseconds(timeOffset);
188-
}
189-
190-
return DateTime.MinValue;
185+
return DateTime.TryParseExact(value, DATETIME_FORMAT, cultureInfo, DateTimeStyles.None, out var timestamp)
186+
? timestamp.AddMilliseconds(timeOffset)
187+
: DateTime.MinValue;
191188
}
192189
catch (Exception)
193190
{

src/JsonColumnizer/JsonColumnizer.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.Linq;
4-
51
using ColumnizerLib;
62

73
using LogExpert;
@@ -112,7 +108,7 @@ public virtual IColumnizedLogLine SplitLine (ILogLineColumnizerCallback callback
112108

113109
columns.Last().FullValue = line.FullLine;
114110

115-
cLogLine.ColumnValues = columns.Select(a => (IColumn)a).ToArray();
111+
cLogLine.ColumnValues = [.. columns.Select(a => (IColumn)a)];
116112

117113
return cLogLine;
118114
}

src/Log4jXmlColumnizer/Log4jXmlColumnizer.cs

Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
1-
using System;
2-
using System.Collections.Generic;
31
using System.Globalization;
4-
using System.IO;
5-
using System.Linq;
62
using System.Runtime.Serialization;
73
using System.Runtime.Versioning;
8-
using System.Windows.Forms;
94

105
using ColumnizerLib;
116

@@ -23,8 +18,8 @@ public class Log4jXmlColumnizer : ILogLineXmlColumnizer, IColumnizerConfigurator
2318
public const int COLUMN_COUNT = 9;
2419
protected const string DATETIME_FORMAT = "dd.MM.yyyy HH:mm:ss.fff";
2520

26-
private static readonly XmlConfig xmlConfig = new();
27-
private const char separatorChar = '\xFFFD';
21+
private static readonly XmlConfig _xmlConfig = new();
22+
private const char SEPARATOR_CHAR = '\xFFFD';
2823
private readonly char[] trimChars = ['\xFFFD'];
2924
private Log4jXmlColumnizerConfig _config;
3025
private readonly CultureInfo _cultureInfo = new("de-DE");
@@ -45,14 +40,14 @@ public Log4jXmlColumnizer ()
4540

4641
public IXmlLogConfiguration GetXmlLogConfiguration ()
4742
{
48-
return xmlConfig;
43+
return _xmlConfig;
4944
}
5045

5146
public ILogLine GetLineTextForClipboard (ILogLine logLine, ILogLineColumnizerCallback callback)
5247
{
5348
Log4JLogLine line = new()
5449
{
55-
FullLine = logLine.FullLine.Replace(separatorChar, '|'),
50+
FullLine = logLine.FullLine.Replace(SEPARATOR_CHAR, '|'),
5651
LineNumber = logLine.LineNumber
5752
};
5853

@@ -81,8 +76,10 @@ public string[] GetColumnNames ()
8176

8277
public IColumnizedLogLine SplitLine (ILogLineColumnizerCallback callback, ILogLine line)
8378
{
84-
ColumnizedLogLine clogLine = new();
85-
clogLine.LogLine = line;
79+
ColumnizedLogLine clogLine = new()
80+
{
81+
LogLine = line
82+
};
8683

8784
var columns = Column.CreateColumns(COLUMN_COUNT, clogLine);
8885

@@ -103,7 +100,7 @@ public IColumnizedLogLine SplitLine (ILogLineColumnizerCallback callback, ILogLi
103100
columns[8].FullValue = line.FullLine;
104101
}
105102

106-
var newDate = dateTime.ToString(DATETIME_FORMAT);
103+
var newDate = dateTime.ToString(DATETIME_FORMAT, CultureInfo.InvariantCulture);
107104
columns[0].FullValue = newDate;
108105
}
109106
catch (Exception)
@@ -118,14 +115,14 @@ public IColumnizedLogLine SplitLine (ILogLineColumnizerCallback callback, ILogLi
118115

119116
if (cols.Length != COLUMN_COUNT)
120117
{
121-
columns[0].FullValue = "";
122-
columns[1].FullValue = "";
123-
columns[2].FullValue = "";
124-
columns[3].FullValue = "";
125-
columns[4].FullValue = "";
126-
columns[5].FullValue = "";
127-
columns[6].FullValue = "";
128-
columns[7].FullValue = "";
118+
columns[0].FullValue = string.Empty;
119+
columns[1].FullValue = string.Empty;
120+
columns[2].FullValue = string.Empty;
121+
columns[3].FullValue = string.Empty;
122+
columns[4].FullValue = string.Empty;
123+
columns[5].FullValue = string.Empty;
124+
columns[6].FullValue = string.Empty;
125+
columns[7].FullValue = string.Empty;
129126
columns[8].FullValue = line.FullLine;
130127
}
131128
else
@@ -143,11 +140,9 @@ public IColumnizedLogLine SplitLine (ILogLineColumnizerCallback callback, ILogLi
143140

144141
clogLine.ColumnValues = filteredColumns.Select(a => a as IColumn).ToArray();
145142

146-
147143
return clogLine;
148144
}
149145

150-
151146
public bool IsTimeshiftImplemented ()
152147
{
153148
return true;
@@ -170,14 +165,14 @@ public DateTime GetTimestamp (ILogLineColumnizerCallback callback, ILogLine line
170165
return DateTime.MinValue;
171166
}
172167

173-
var endIndex = line.FullLine.IndexOf(separatorChar, 1);
168+
var endIndex = line.FullLine.IndexOf(SEPARATOR_CHAR, 1);
174169

175-
if (endIndex > 20 || endIndex < 0)
170+
if (endIndex is > 20 or < 0)
176171
{
177172
return DateTime.MinValue;
178173
}
179174

180-
var value = line.FullLine.Substring(0, endIndex);
175+
var value = line.FullLine[..endIndex];
181176

182177
try
183178
{
@@ -240,9 +235,9 @@ public void Configure (ILogLineColumnizerCallback callback, string configDir)
240235

241236
public void LoadConfig (string configDir)
242237
{
243-
var configPath = configDir + Path.DirectorySeparatorChar + "log4jxmlcolumnizer.json";
238+
var configPath = Path.Join(configDir, "log4jxmlcolumnizer.json");
244239

245-
FileInfo fileInfo = new(configDir + Path.DirectorySeparatorChar + "log4jxmlcolumnizer.json");
240+
FileInfo fileInfo = new(configPath);
246241

247242
if (!File.Exists(configPath))
248243
{
@@ -252,15 +247,16 @@ public void LoadConfig (string configDir)
252247
{
253248
try
254249
{
255-
_config = JsonConvert.DeserializeObject<Log4jXmlColumnizerConfig>(File.ReadAllText($"{fileInfo.FullName}"));
250+
_config = JsonConvert.DeserializeObject<Log4jXmlColumnizerConfig>(File.ReadAllText(fileInfo.FullName));
251+
256252
if (_config.ColumnList.Count < COLUMN_COUNT)
257253
{
258254
_config = new Log4jXmlColumnizerConfig(GetAllColumnNames());
259255
}
260256
}
261257
catch (SerializationException e)
262258
{
263-
MessageBox.Show(e.Message, "Deserialize");
259+
_ = MessageBox.Show(e.Message, "Deserialize");
264260
_config = new Log4jXmlColumnizerConfig(GetAllColumnNames());
265261
}
266262
}
@@ -308,7 +304,6 @@ private Column[] MapColumns (Column[] cols)
308304
index++;
309305
}
310306

311-
312307
return [.. output];
313308
}
314309

src/LogExpert.Core/Classes/Persister/PersisterXML.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ namespace LogExpert.Core.Classes.Persister;
1313
/// <summary>
1414
/// Persister for XML format persistence data.
1515
/// </summary>
16+
[Obsolete("XML persistence is deprecated and will be removed in future versions. This is a fallback for older Versions")]
1617
public static class PersisterXML
1718
{
1819
#region Fields

0 commit comments

Comments
 (0)