Skip to content

Commit eb78ff2

Browse files
committed
upd(loggerpro): v2.0
1 parent 02e946c commit eb78ff2

24 files changed

+211
-40
lines changed

lib/loggerpro/LoggerPro.Builder.pas

Lines changed: 87 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//
33
// LoggerPro
44
//
5-
// Copyright (c) 2010-2025 Daniele Teti
5+
// Copyright (c) 2010-2026 Daniele Teti
66
//
77
// https://github.com/danieleteti/loggerpro
88
//
@@ -185,6 +185,13 @@ interface
185185
function WithLogLevel(aLogLevel: TLogType): IVCLListViewAppenderConfigurator;
186186
function WithRenderer(aRenderer: ILogItemRenderer): IVCLListViewAppenderConfigurator;
187187
end;
188+
189+
{ Windows Event Log appender configurator (Windows only) }
190+
IWindowsEventLogAppenderConfigurator = interface(IAppenderConfigurator)
191+
['{A1B2C3D4-E5F6-7A8B-9C0D-E1F2A3B4C5D6}']
192+
function WithLogLevel(aLogLevel: TLogType): IWindowsEventLogAppenderConfigurator;
193+
function WithSourceName(const aSourceName: string): IWindowsEventLogAppenderConfigurator;
194+
end;
188195
{$ENDIF}
189196

190197
{ FireDAC DB appender configurator (cross-platform) }
@@ -225,6 +232,10 @@ interface
225232
function WriteToVCLMemo(aMemo: TObject): IVCLMemoAppenderConfigurator;
226233
function WriteToVCLListBox(aListBox: TObject): IVCLListBoxAppenderConfigurator;
227234
function WriteToVCLListView(aListView: TObject): IVCLListViewAppenderConfigurator;
235+
{ Windows Event Log appender }
236+
function WriteToWindowsEventLog: IWindowsEventLogAppenderConfigurator;
237+
{ Windows Event Log appender for Windows Services (uses TService.LogMessage) }
238+
function WriteToWindowsEventLogForService(aService: TObject): IWindowsEventLogAppenderConfigurator;
228239
{$ENDIF}
229240
{ FireDAC appender (cross-platform) }
230241
function WriteToFireDAC: IFireDACAppenderConfigurator;
@@ -264,8 +275,10 @@ implementation
264275
, LoggerPro.VCLMemoAppender
265276
, LoggerPro.VCLListBoxAppender
266277
, LoggerPro.VCLListViewAppender
278+
, LoggerPro.WindowsEventLogAppender
267279
, Vcl.StdCtrls
268280
, Vcl.ComCtrls
281+
, Vcl.SvcMgr
269282
{$ENDIF}
270283
;
271284

@@ -506,6 +519,20 @@ TVCLListViewAppenderConfigurator = class(TBaseAppenderConfigurator, IVCLListVi
506519
function Done: ILoggerProBuilder;
507520
end;
508521

522+
{ Windows Event Log appender configurator (Windows only) }
523+
TWindowsEventLogAppenderConfigurator = class(TBaseAppenderConfigurator, IWindowsEventLogAppenderConfigurator)
524+
private
525+
FService: TService;
526+
FSourceName: string;
527+
FUseService: Boolean;
528+
public
529+
constructor Create(aBuilder: TLoggerProBuilder); overload;
530+
constructor Create(aBuilder: TLoggerProBuilder; aService: TService); overload;
531+
function WithLogLevel(aLogLevel: TLogType): IWindowsEventLogAppenderConfigurator;
532+
function WithSourceName(const aSourceName: string): IWindowsEventLogAppenderConfigurator;
533+
function Done: ILoggerProBuilder;
534+
end;
535+
509536
{$ENDIF}
510537

511538
{ FireDAC DB appender configurator (cross-platform) }
@@ -563,6 +590,9 @@ TLoggerProBuilder = class(TInterfacedObject, ILoggerProBuilder)
563590
function WriteToVCLMemo(aMemo: TObject): IVCLMemoAppenderConfigurator;
564591
function WriteToVCLListBox(aListBox: TObject): IVCLListBoxAppenderConfigurator;
565592
function WriteToVCLListView(aListView: TObject): IVCLListViewAppenderConfigurator;
593+
// Windows Event Log appender (Windows only)
594+
function WriteToWindowsEventLog: IWindowsEventLogAppenderConfigurator;
595+
function WriteToWindowsEventLogForService(aService: TObject): IWindowsEventLogAppenderConfigurator;
566596
{$ENDIF}
567597
// FireDAC appender (cross-platform)
568598
function WriteToFireDAC: IFireDACAppenderConfigurator;
@@ -721,6 +751,18 @@ function TLoggerProBuilder.WriteToVCLListView(aListView: TObject): IVCLListViewA
721751
Result := TVCLListViewAppenderConfigurator.Create(Self, TListView(aListView));
722752
end;
723753

754+
function TLoggerProBuilder.WriteToWindowsEventLog: IWindowsEventLogAppenderConfigurator;
755+
begin
756+
Result := TWindowsEventLogAppenderConfigurator.Create(Self);
757+
end;
758+
759+
function TLoggerProBuilder.WriteToWindowsEventLogForService(aService: TObject): IWindowsEventLogAppenderConfigurator;
760+
begin
761+
if not (aService is TService) then
762+
raise ELoggerPro.Create('WriteToWindowsEventLogForService requires a TService instance');
763+
Result := TWindowsEventLogAppenderConfigurator.Create(Self, TService(aService));
764+
end;
765+
724766
{$ENDIF}
725767

726768
function TLoggerProBuilder.WriteToFireDAC: IFireDACAppenderConfigurator;
@@ -1508,6 +1550,50 @@ function TVCLListViewAppenderConfigurator.Done: ILoggerProBuilder;
15081550
Result := FBuilder;
15091551
end;
15101552

1553+
{ TWindowsEventLogAppenderConfigurator }
1554+
1555+
constructor TWindowsEventLogAppenderConfigurator.Create(aBuilder: TLoggerProBuilder);
1556+
begin
1557+
inherited Create(aBuilder);
1558+
FService := nil;
1559+
FSourceName := '';
1560+
FUseService := False;
1561+
end;
1562+
1563+
constructor TWindowsEventLogAppenderConfigurator.Create(aBuilder: TLoggerProBuilder; aService: TService);
1564+
begin
1565+
inherited Create(aBuilder);
1566+
FService := aService;
1567+
FSourceName := '';
1568+
FUseService := True;
1569+
end;
1570+
1571+
function TWindowsEventLogAppenderConfigurator.WithLogLevel(aLogLevel: TLogType): IWindowsEventLogAppenderConfigurator;
1572+
begin
1573+
FLogLevel := aLogLevel;
1574+
FLogLevelSet := True;
1575+
Result := Self;
1576+
end;
1577+
1578+
function TWindowsEventLogAppenderConfigurator.WithSourceName(const aSourceName: string): IWindowsEventLogAppenderConfigurator;
1579+
begin
1580+
FSourceName := aSourceName;
1581+
Result := Self;
1582+
end;
1583+
1584+
function TWindowsEventLogAppenderConfigurator.Done: ILoggerProBuilder;
1585+
var
1586+
lAppender: ILogAppender;
1587+
begin
1588+
if FUseService then
1589+
lAppender := TLoggerProWindowsEventLogAppender.Create(FService)
1590+
else
1591+
lAppender := TLoggerProWindowsEventLogAppender.Create(FSourceName);
1592+
ApplyLogLevel(lAppender);
1593+
FBuilder.InternalAddAppender(lAppender);
1594+
Result := FBuilder;
1595+
end;
1596+
15111597
{$ENDIF}
15121598

15131599
{ TFireDACAppenderConfigurator }

lib/loggerpro/LoggerPro.CallbackAppender.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//
33
// LoggerPro
44
//
5-
// Copyright (c) 2010-2025 Daniele Teti
5+
// Copyright (c) 2010-2026 Daniele Teti
66
//
77
// https://github.com/danieleteti/loggerpro
88
//

lib/loggerpro/LoggerPro.ConsoleAppender.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//
33
// LoggerPro
44
//
5-
// Copyright (c) 2010-2025 Daniele Teti
5+
// Copyright (c) 2010-2026 Daniele Teti
66
//
77
// https://github.com/danieleteti/loggerpro
88
//

lib/loggerpro/LoggerPro.EMailAppender.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//
33
// LoggerPro
44
//
5-
// Copyright (c) 2010-2025 Daniele Teti
5+
// Copyright (c) 2010-2026 Daniele Teti
66
//
77
// https://github.com/danieleteti/loggerpro
88
//

lib/loggerpro/LoggerPro.ElasticSearchAppender.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//
33
// LoggerPro
44
//
5-
// Copyright (c) 2010-2025 Daniele Teti
5+
// Copyright (c) 2010-2026 Daniele Teti
66
//
77
// https://github.com/danieleteti/loggerpro
88
//

lib/loggerpro/LoggerPro.FileAppender.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//
33
// LoggerPro
44
//
5-
// Copyright (c) 2010-2025 Daniele Teti
5+
// Copyright (c) 2010-2026 Daniele Teti
66
//
77
// https://github.com/danieleteti/loggerpro
88
//

lib/loggerpro/LoggerPro.GlobalLogger.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//
33
// LoggerPro
44
//
5-
// Copyright (c) 2010-2025 Daniele Teti
5+
// Copyright (c) 2010-2026 Daniele Teti
66
//
77
// https://github.com/danieleteti/loggerpro
88
//

lib/loggerpro/LoggerPro.HTTPAppender.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//
33
// LoggerPro
44
//
5-
// Copyright (c) 2010-2025 Daniele Teti
5+
// Copyright (c) 2010-2026 Daniele Teti
66
//
77
// https://github.com/danieleteti/loggerpro
88
//

lib/loggerpro/LoggerPro.JSONLFileAppender.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//
33
// LoggerPro
44
//
5-
// Copyright (c) 2010-2025 Daniele Teti
5+
// Copyright (c) 2010-2026 Daniele Teti
66
//
77
// https://github.com/danieleteti/loggerpro
88
//

lib/loggerpro/LoggerPro.MemoryAppender.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//
33
// LoggerPro
44
//
5-
// Copyright (c) 2010-2025 Daniele Teti
5+
// Copyright (c) 2010-2026 Daniele Teti
66
//
77
// https://github.com/danieleteti/loggerpro
88
//

0 commit comments

Comments
 (0)