Skip to content

Commit 868e250

Browse files
committed
New receivers and optimizing
* Added new custom receiver for TCP, UDP and directories * Added option for all UDP receiver to join a multicast group * Fixed column name in filter window * Improved parsing of timestamps in the syslog receivers
1 parent 3280da3 commit 868e250

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+5997
-85
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Logbert is an advanced log message viewer for log4net, log4j and others.
55

66
### Features
77
* Multiple log receivers
8-
* Chainsaw compatible loggers like log4net or nlog (UDP, TCP and File based)
8+
* Chainsaw compatible loggers like log4net or nlog (UDP, TCP, File and Directory based)
99
* Windows event log
1010
* SysLog events (UDP, TCP and File based)
1111
* Create unlimited count of bookmarks
@@ -21,7 +21,7 @@ Logbert is an advanced log message viewer for log4net, log4j and others.
2121
* Trigger function if a new log message is received or a bookmark is changed
2222
* Statistic windows to see the log level ratio.
2323
* Directory based receiving (load multiple log files as one)
24-
* Customizable log receiver
24+
* Customizable log receiver (UDP, TCP, File and Directory based)
2525

2626
### Planned Features
2727
* HTML Reporting

src/Logbert/App.config

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,60 @@
450450
<setting name="WaitCursorTimeout" serializeAs="String">
451451
<value>1000</value>
452452
</setting>
453+
<setting name="PnlCustomUdpSettingsInterface" serializeAs="String">
454+
<value />
455+
</setting>
456+
<setting name="PnlCustomUdpSettingsPort" serializeAs="String">
457+
<value>7071</value>
458+
</setting>
459+
<setting name="DockLayoutCustomUdpReceiver" serializeAs="String">
460+
<value />
461+
</setting>
462+
<setting name="PnlCustomUdpSettingsMulticastAddress" serializeAs="String">
463+
<value />
464+
</setting>
465+
<setting name="PnlCustomUdpSettingsJoinMulticast" serializeAs="String">
466+
<value>False</value>
467+
</setting>
468+
<setting name="PnlLog4NetUdpSettingsJoinMulticast" serializeAs="String">
469+
<value>False</value>
470+
</setting>
471+
<setting name="PnlLog4NetUdpSettingsMulticastAddress" serializeAs="String">
472+
<value />
473+
</setting>
474+
<setting name="PnlNLogUdpSettingsJoinMulticast" serializeAs="String">
475+
<value>False</value>
476+
</setting>
477+
<setting name="PnlNLogUdpSettingsMulticastAddress" serializeAs="String">
478+
<value />
479+
</setting>
480+
<setting name="DockLayoutCustomDirReceiver" serializeAs="String">
481+
<value />
482+
</setting>
483+
<setting name="PnlCustomDirectorySettingsDirectory" serializeAs="String">
484+
<value />
485+
</setting>
486+
<setting name="PnlCustomDirectorySettingsPattern" serializeAs="String">
487+
<value />
488+
</setting>
489+
<setting name="PnlCustomDirectorySettingsReadAllExisting" serializeAs="String">
490+
<value>False</value>
491+
</setting>
492+
<setting name="DockLayoutCustomTcpReceiver" serializeAs="String">
493+
<value />
494+
</setting>
495+
<setting name="PnlCustomTcpSettingsInterface" serializeAs="String">
496+
<value />
497+
</setting>
498+
<setting name="PnlCustomTcpSettingsPort" serializeAs="String">
499+
<value>0</value>
500+
</setting>
501+
<setting name="PnlSyslogFileSettingsTimestampFormat" serializeAs="String">
502+
<value>MMM d HH:mm:ss</value>
503+
</setting>
504+
<setting name="PnlSyslogUdpSettingsTimestampFormat" serializeAs="String">
505+
<value>MMM d HH:mm:ss</value>
506+
</setting>
453507
</Com.Couchcoding.Logbert.Properties.Settings>
454508
</userSettings>
455509
<applicationSettings>

src/Logbert/Dialogs/Docking/FrmLogFilter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ private void UpdateLogFilters()
175175
int rowIndex = dgvFilter.Rows.Add(
176176
mFilterImage
177177
, filter.IsActive
178-
, mLogProvider.Columns[filter.ColumnIndex - 1]
178+
, mLogProvider.Columns[filter.ColumnIndex - 1].Name
179179
, string.Format("{0}{1}{2}", filter.OperatorIndex == 1
180180
? Resources.strFilterNotMatchStartTag
181181
: string.Empty, filter.ColumnMatchValueRegEx, filter.OperatorIndex == 1

src/Logbert/Dialogs/FrmNew.Designer.cs

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Logbert/Dialogs/FrmNew.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
using Com.Couchcoding.Logbert.Receiver.Log4NetDirReceiver;
4848
using Com.Couchcoding.Logbert.Receiver.NLogDirReceiver;
4949
using Com.Couchcoding.Logbert.Receiver.WinDebugReceiver;
50+
using Com.Couchcoding.Logbert.Receiver.CustomReceiver.CustomUdpReceiver;
5051

5152
namespace Com.Couchcoding.Logbert.Dialogs
5253
{
@@ -108,11 +109,6 @@ private void LstLoggerSelectedIndexChanged(object sender, System.EventArgs e)
108109
finally
109110
{
110111
grpSettings.ResumeLayout();
111-
112-
if (grpSettings.Controls.Count == 1)
113-
{
114-
grpSettings.Controls[0].Select();
115-
}
116112
}
117113
}
118114
}
@@ -178,7 +174,10 @@ public FrmNew()
178174
lstLogger.Items.Add(new EventlogReceiver());
179175
lstLogger.Items.Add(new WinDebugReceiver());
180176
lstLogger.AddSeperator();
177+
lstLogger.Items.Add(new CustomUdpReceiver());
178+
lstLogger.Items.Add(new CustomTcpReceiver());
181179
lstLogger.Items.Add(new CustomFileReceiver());
180+
lstLogger.Items.Add(new CustomDirReceiver());
182181

183182
lstLogger.SelectedIndex = 0;
184183
}

src/Logbert/Dialogs/FrmOptions.Designer.cs

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Logbert/Logbert.csproj

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,13 +318,34 @@
318318
<DependentUpon>Resources.resx</DependentUpon>
319319
</Compile>
320320
<Compile Include="Receiver\CustomReceiver\Columnizer.cs" />
321+
<Compile Include="Receiver\CustomReceiver\CustomDirReceiver\CustomDirReceiver.cs" />
322+
<Compile Include="Receiver\CustomReceiver\CustomDirReceiver\CustomDirReceiverSettings.cs">
323+
<SubType>UserControl</SubType>
324+
</Compile>
325+
<Compile Include="Receiver\CustomReceiver\CustomDirReceiver\CustomDirReceiverSettings.Designer.cs">
326+
<DependentUpon>CustomDirReceiverSettings.cs</DependentUpon>
327+
</Compile>
321328
<Compile Include="Receiver\CustomReceiver\CustomFileReceiver\CustomFileReceiver.cs" />
322329
<Compile Include="Receiver\CustomReceiver\CustomFileReceiver\CustomFileReceiverSettings.cs">
323330
<SubType>UserControl</SubType>
324331
</Compile>
325332
<Compile Include="Receiver\CustomReceiver\CustomFileReceiver\CustomFileReceiverSettings.Designer.cs">
326333
<DependentUpon>CustomFileReceiverSettings.cs</DependentUpon>
327334
</Compile>
335+
<Compile Include="Receiver\CustomReceiver\CustomTcpReceiver\CustomTcpReceiver.cs" />
336+
<Compile Include="Receiver\CustomReceiver\CustomTcpReceiver\CustomTcpReceiverSettings.cs">
337+
<SubType>UserControl</SubType>
338+
</Compile>
339+
<Compile Include="Receiver\CustomReceiver\CustomTcpReceiver\CustomTcpReceiverSettings.Designer.cs">
340+
<DependentUpon>CustomTcpReceiverSettings.cs</DependentUpon>
341+
</Compile>
342+
<Compile Include="Receiver\CustomReceiver\CustomUdpReceiver\CustomUdpReceiver.cs" />
343+
<Compile Include="Receiver\CustomReceiver\CustomUdpReceiver\CustomUdpReceiverSettings.cs">
344+
<SubType>UserControl</SubType>
345+
</Compile>
346+
<Compile Include="Receiver\CustomReceiver\CustomUdpReceiver\CustomUdpReceiverSettings.Designer.cs">
347+
<DependentUpon>CustomUdpReceiverSettings.cs</DependentUpon>
348+
</Compile>
328349
<Compile Include="Receiver\CustomReceiver\LogColumn.cs" />
329350
<Compile Include="Receiver\CustomReceiver\LogColumnType.cs" />
330351
<Compile Include="Receiver\EventlogReceiver\EventlogReceiver.cs" />
@@ -497,10 +518,19 @@
497518
<SubType>Designer</SubType>
498519
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
499520
</EmbeddedResource>
521+
<EmbeddedResource Include="Receiver\CustomReceiver\CustomDirReceiver\CustomDirReceiverSettings.resx">
522+
<DependentUpon>CustomDirReceiverSettings.cs</DependentUpon>
523+
</EmbeddedResource>
500524
<EmbeddedResource Include="Receiver\CustomReceiver\CustomFileReceiver\CustomFileReceiverSettings.resx">
501525
<DependentUpon>CustomFileReceiverSettings.cs</DependentUpon>
502526
<SubType>Designer</SubType>
503527
</EmbeddedResource>
528+
<EmbeddedResource Include="Receiver\CustomReceiver\CustomTcpReceiver\CustomTcpReceiverSettings.resx">
529+
<DependentUpon>CustomTcpReceiverSettings.cs</DependentUpon>
530+
</EmbeddedResource>
531+
<EmbeddedResource Include="Receiver\CustomReceiver\CustomUdpReceiver\CustomUdpReceiverSettings.resx">
532+
<DependentUpon>CustomUdpReceiverSettings.cs</DependentUpon>
533+
</EmbeddedResource>
504534
<EmbeddedResource Include="Receiver\EventlogReceiver\EventlogReceiverSettings.resx">
505535
<DependentUpon>EventlogReceiverSettings.cs</DependentUpon>
506536
</EmbeddedResource>

src/Logbert/Logging/LogMessageSyslog.cs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,9 @@ private LogLevel MapLevelType(Severity levelType)
223223
/// Parses the given <paramref name="data"/> for possible log message parts.
224224
/// </summary>
225225
/// <param name="data">The data string to parse.</param>
226+
/// <param name="timestampFormat">The format of the timestamp within the message.</param>
226227
/// <returns><c>True</c> on success, otherwise <c>false</c>.</returns>
227-
private bool ParseData(string data)
228+
private bool ParseData(string data, string timestampFormat)
228229
{
229230
if (string.IsNullOrEmpty(data))
230231
{
@@ -246,23 +247,23 @@ private bool ParseData(string data)
246247
mFacility = (Facility)((int)priMatrix >> 3);
247248
mLocalTimestamp = DateTime.Now;
248249

249-
string syslogMessage = data.Substring(msgMtc.Groups[0].Length);
250+
string syslogMessage = data.Substring(msgMtc.Groups[0].Length).TrimStart();
250251
int hostIndex = 0;
251252

252-
if (syslogMessage.Length > 15)
253+
if (syslogMessage.Length > timestampFormat.Length)
253254
{
254-
string strTimeStamp = syslogMessage.Substring(hostIndex, 15);
255+
string strTimeStamp = syslogMessage.Substring(hostIndex, timestampFormat.Length);
255256

256-
bool dtParseResult = DateTime.TryParseExact(
257+
bool dtParseResult = !string.IsNullOrEmpty(timestampFormat) && DateTime.TryParseExact(
257258
strTimeStamp
258-
, "MMM d HH:mm:ss"
259+
, timestampFormat
259260
, CultureInfo.InvariantCulture
260261
, DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeLocal
261262
, out mTimestamp);
262263

263264
if (dtParseResult)
264265
{
265-
hostIndex += 16;
266+
hostIndex += timestampFormat.Length + 1;
266267
}
267268
else
268269
{
@@ -378,9 +379,10 @@ public override Table ToLuaTable(Script owner)
378379
/// </summary>
379380
/// <param name="rawData">The data <see cref="Array"/> the new <see cref="LogMessageSyslog"/> represents.</param>
380381
/// <param name="index">The index of the <see cref="LogMessage"/>.</param>
381-
public LogMessageSyslog(string rawData, int index) : base(rawData, index)
382+
/// <param name="timestampFormat">The format of the timestamp within the message.</param>
383+
public LogMessageSyslog(string rawData, int index, string timestampFormat) : base(rawData, index)
382384
{
383-
if (!ParseData(rawData))
385+
if (!ParseData(rawData, timestampFormat))
384386
{
385387
throw new ApplicationException("Unable to parse the logger data.");
386388
}

src/Logbert/MainForm.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,12 @@ public partial class MainForm : Form, ISearchable
7272
/// <summary>
7373
/// Defines the URL the user may download the newest version of Logbert.
7474
/// </summary>
75-
private const string LOGBER_LATEST_URI = @"https://github.com/couchcoding/Logbert/releases/latest";
75+
private const string LOGBERT_LATEST_URI = @"https://github.com/couchcoding/Logbert/releases/latest";
76+
77+
/// <summary>
78+
/// Defines the default timeout for update check reqeusts.
79+
/// </summary>
80+
private const int LOGBERT_UPDATE_TIMEOUT = 2000;
7681

7782
/// <summary>
7883
/// Defines the <see cref="Regex"/> to parse a release name from the GitHub API 3 JSON string.
@@ -434,7 +439,7 @@ private void LoadFileIntoLogger(string logFileToLoad, bool verbose = true)
434439
ReceiverBase[] knownFileReceiver =
435440
{
436441
new Log4NetFileReceiver(logFileToLoad, true)
437-
, new SyslogFileReceiver (logFileToLoad, true)
442+
, new SyslogFileReceiver (logFileToLoad, true, Settings.Default.PnlSyslogFileSettingsTimestampFormat)
438443
};
439444

440445
foreach (ReceiverBase receiver in knownFileReceiver)
@@ -622,8 +627,10 @@ protected override void OnLoad(EventArgs e)
622627
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(LOGBERT_UPDATE_API);
623628

624629
// GitHub needs some properties to set.
625-
request.Method = "GET";
626-
request.UserAgent = "Logbert";
630+
request.Method = "GET";
631+
request.UserAgent = "Logbert";
632+
request.Timeout = LOGBERT_UPDATE_TIMEOUT;
633+
request.ReadWriteTimeout = LOGBERT_UPDATE_TIMEOUT;
627634

628635
try
629636
{
@@ -656,7 +663,7 @@ private void SetupAndShowUpdateLabel()
656663
mUpdateLabel.Click += (sender, e) =>
657664
{
658665
// Initialize the open browser handler.
659-
Browser.Open(LOGBER_LATEST_URI, this);
666+
Browser.Open(LOGBERT_LATEST_URI, this);
660667
};
661668

662669
// Finally make the link visible.

src/Logbert/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@
2929
// Build Number
3030
// Revision
3131
//
32-
[assembly: AssemblyVersion("1.3.6.1")]
33-
[assembly: AssemblyFileVersion("1.3.6.1")]
32+
[assembly: AssemblyVersion("1.4.0.0")]
33+
[assembly: AssemblyFileVersion("1.4.0.0")]
3434
[assembly: NeutralResourcesLanguageAttribute("")]

0 commit comments

Comments
 (0)