2019-03-06 12:21:46 +01:00
|
|
|
unit LoggerPro.OutputDebugStringAppender;
|
|
|
|
{ <@abstract(The unit to include if you want to use @link(TLoggerProOutputDebugStringAppender))
|
|
|
|
@author(Daniele Teti) }
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
uses
|
|
|
|
LoggerPro, System.Classes;
|
|
|
|
|
|
|
|
type
|
|
|
|
{ @abstract(This appenders sends logs to the @code(OutputDebugString) function on Windows OSes)
|
|
|
|
To learn how to use this appender, check the sample @code(outputdebugstring_appender.dproj)
|
|
|
|
}
|
|
|
|
TLoggerProOutputDebugStringAppender = class(TLoggerProAppenderBase)
|
|
|
|
private
|
|
|
|
FModuleName: string;
|
|
|
|
public
|
|
|
|
constructor Create; override;
|
|
|
|
procedure Setup; override;
|
|
|
|
procedure TearDown; override;
|
|
|
|
procedure WriteLog(const aLogItem: TLogItem); override;
|
|
|
|
end;
|
|
|
|
|
|
|
|
implementation
|
|
|
|
|
|
|
|
uses
|
2020-04-27 17:18:16 +02:00
|
|
|
System.SysUtils,
|
|
|
|
System.IOUtils
|
|
|
|
{$IFDEF MSWINDOWS}
|
|
|
|
, Winapi.Windows
|
|
|
|
, Winapi.Messages
|
|
|
|
{$ENDIF}
|
|
|
|
;
|
2019-03-06 12:21:46 +01:00
|
|
|
|
|
|
|
{ TStringsLogAppender }
|
|
|
|
const
|
|
|
|
DEFAULT_LOG_FORMAT = '%0:s [TID %1:-8d][%2:-10s] %3:s [%4:s]';
|
|
|
|
|
|
|
|
constructor TLoggerProOutputDebugStringAppender.Create;
|
|
|
|
begin
|
|
|
|
inherited Create;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TLoggerProOutputDebugStringAppender.Setup;
|
|
|
|
begin
|
2020-04-27 17:18:16 +02:00
|
|
|
{$IFDEF MSWINDOWS}
|
2019-03-06 12:21:46 +01:00
|
|
|
FModuleName := TPath.GetFileName(GetModuleName(HInstance));
|
2020-04-27 17:18:16 +02:00
|
|
|
{$ENDIF}
|
2019-03-06 12:21:46 +01:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TLoggerProOutputDebugStringAppender.TearDown;
|
|
|
|
begin
|
|
|
|
// do nothing
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure TLoggerProOutputDebugStringAppender.WriteLog(const aLogItem
|
|
|
|
: TLogItem);
|
2020-04-27 17:18:16 +02:00
|
|
|
{$IFDEF MSWINDOWS}
|
2019-03-06 12:21:46 +01:00
|
|
|
var
|
|
|
|
lLog: string;
|
2020-04-27 17:18:16 +02:00
|
|
|
{$ENDIF}
|
2019-03-06 12:21:46 +01:00
|
|
|
begin
|
2020-04-27 17:18:16 +02:00
|
|
|
{$IFDEF MSWINDOWS}
|
2019-03-06 12:21:46 +01:00
|
|
|
lLog := '(' + FModuleName + ') ' + Format(DEFAULT_LOG_FORMAT,
|
|
|
|
[datetimetostr(aLogItem.TimeStamp), aLogItem.ThreadID,
|
|
|
|
aLogItem.LogTypeAsString, aLogItem.LogMessage, aLogItem.LogTag]);
|
|
|
|
OutputDebugString(PChar(lLog));
|
2020-04-27 17:18:16 +02:00
|
|
|
{$ENDIF}
|
2019-03-06 12:21:46 +01:00
|
|
|
end;
|
|
|
|
|
|
|
|
end.
|