anchor.diff:    Log(aType, aMessage, aParams, aTag);
   end;
   
  -procedure TLogWriter.Initialize(aEventsHandler: TLoggerProEventsHandler);
  -begin
  -  FLoggerThread := TLoggerThread.Create(FLogAppenders);
  -  FLoggerThread.EventsHandlers := aEventsHandler;
  -  FLoggerThread.Start;
  -end;
   
   procedure TLogWriter.Warn(const aMessage, aTag: string);
   begin
  
positive.code:     procedure Error(const aMessage: string; const aParams: array of TVarRec; const aTag: string); overload;
      procedure ErrorFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
  
      procedure Log(const aType: TLogType; const aMessage: string; const aTag: string); overload;
      procedure Log(const aType: TLogType; const aMessage: string; const aParams: array of const; const aTag: string); overload;
      procedure LogFmt(const aType: TLogType; const aMessage: string; const aParams: array of const; const aTag: string);
    end;
  
negative.code:     function _Release: Integer; stdcall;
    end;
  
    TCustomLogWriter = class(TLoggerProInterfacedObject, ICustomLogWriter)
    strict private
      FLoggerThread: TLoggerThread;
      FLogAppenders: TLogAppenderList;
      FFreeAllowed: Boolean;
      FLogLevel: TLogType;
      function GetAppendersClassNames: TArray<string>;
    protected
      procedure Initialize(const aEventsHandler: TLoggerProEventsHandler);
    public
      constructor Create(const aLogLevel: TLogType = TLogType.Debug); overload;
      constructor Create(const aLogAppenders: TLogAppenderList; const aLogLevel: TLogType = TLogType.Debug); overload;
      destructor Destroy; override;
  
      function GetAppenders(const aIndex: Integer): ILogAppender;
      procedure AddAppender(const aAppender: ILogAppender);
      procedure DelAppender(const aAppender: ILogAppender);
      function AppendersCount(): Integer;
  
      procedure Log(const aType: TLogType; const aMessage: string; const aTag: string); overload;
    end;
  
    TLogWriter = class(TCustomLogWriter, ILogWriter)
    private
    protected
    public
      procedure Debug(const aMessage: string; const aTag: string); overload;
      procedure Debug(const aMessage: string; const aParams: array of TVarRec; const aTag: string); overload;
      procedure DebugFmt(const aMessage: string; const aParams: array of TVarRec; const aTag: string);
  