4

Spring4D のロギングメカニズムはスレッドセーフですか? (ユニット Spring.Logging.* だと思います)

たとえば、複数のスレッドILoggerが次のコンテナーの実装を解決して使用できますか?

uses
  System.SysUtils,
  Spring.Container,
  Spring.Logging,
  Spring.Logging.Appenders,
  Spring.Logging.Controller,
  Spring.Logging.Loggers;

var
  Container: TContainer;
  TextLogAppender: TTextLogAppender;
  FileLogAppender: TFileLogAppender;
  LoggerController: TLoggerController;
  LoggerInThread1: ILogger;
  LoggerInThread2: ILogger;
begin
  TextLogAppender := TTextLogAppender.Create;
  FileLogAppender := TFileLogAppender.Create;
  FileLogAppender.FileName := 'Log.txt';
  LoggerController := TLoggerController.Create;
  LoggerController.AddAppender(TextLogAppender as ILogAppender);
  LoggerController.AddAppender(FileLogAppender as ILogAppender);

  Container := TContainer.Create;
  try
    Container.RegisterInstance<ILoggerController>(LoggerController);
    Container.RegisterType<ILogger, TLogger>;

    Container.Build;

    LoggerInThread1 := Container.Resolve<ILogger>;
    LoggerInThread2 := Container.Resolve<ILogger>;

    {$Region 'threaded code'}
    LoggerInThread1.Info('Hello from Thread 1!');
    LoggerInThread2.Info('Hello from Thread 2!');
    {$EndRegion}
  finally
    Container.Free;
  end;
end;

ブランチリリース/1.2 (現在33e3232... ) を使用しています。

4

1 に答える 1