Files
lazarus-ccr/wst/trunk/ws_helper/logger_intf.pas
inoussa 549deb3e6d lazarus IDE integration :
- WSDL file import ( GUI ) menu   Project/Web Services Toolkit/Import WSDL File ...
  - WSDL Type Library Editor ( GUI ) Project/Web Services Toolkit/Type Library Editor...


git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@209 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2007-07-07 20:56:01 +00:00

91 lines
2.2 KiB
ObjectPascal

{
This file is part of the Web Service Toolkit
Copyright (c) 2007 by Inoussa OUEDRAOGO
This file is provide under modified LGPL licence
( the files COPYING.modifiedLGPL and COPYING.LGPL).
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
unit logger_intf;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
type
TMessageType = ( mtInfo, mtError );
const
MessageTypeNames : array[TMessageType] of string = ( 'Information', 'Error' );
type
ILogger = interface
['{158C90B5-BAC3-40A1-B471-C9327692A3BF}']
procedure Log(const AMsgType : TMessageType; const AMsg : string);overload;
procedure Log(const AMsgType : TMessageType; const AMsg : string; const AArgs : array of const);overload;
function GetMessageCount(const AMsgType : TMessageType) : Integer;
end;
{ TSimpleConsoleLogger }
TSimpleConsoleLogger = class(TInterfacedObject,ILogger)
private
FMessageCount : array[TMessageType] of Integer;
protected
procedure Log(const AMsgType : TMessageType; const AMsg : string);overload;
procedure Log(const AMsgType : TMessageType; const AMsg : string; const AArgs : array of const);overload;
function GetMessageCount(const AMsgType : TMessageType) : Integer;
end;
function SetLogger(ALogger : ILogger) : ILogger;
function GetLogger() : ILogger;
implementation
var FLogger : ILogger = nil;
function SetLogger(ALogger : ILogger) : ILogger;
begin
Result := FLogger;
FLogger := ALogger;
end;
function GetLogger() : ILogger;
begin
Result := FLogger;
end;
{ TSimpleConsoleLogger }
procedure TSimpleConsoleLogger.Log(const AMsgType: TMessageType; const AMsg: string);
begin
Log(AMsgType,AMsg,[]);
end;
procedure TSimpleConsoleLogger.Log(
const AMsgType : TMessageType;
const AMsg : string;
const AArgs : array of const
);
begin
Inc(FMessageCount[AMsgType]);
WriteLn(Format('%s : %s',[MessageTypeNames[AMsgType],Format(AMsg,AArgs)]));
end;
function TSimpleConsoleLogger.GetMessageCount(const AMsgType: TMessageType): Integer;
begin
Result := FMessageCount[AMsgType];
end;
end.