diff --git a/glm-4.7.txt b/glm-4.7.txt new file mode 100644 index 0000000..30d74d2 --- /dev/null +++ b/glm-4.7.txt @@ -0,0 +1 @@ +test \ No newline at end of file diff --git a/samples/10_multiple_appenders/LoggerProConfig.pas b/samples/10_multiple_appenders/LoggerProConfig.pas index c9f6019..d209c48 100644 --- a/samples/10_multiple_appenders/LoggerProConfig.pas +++ b/samples/10_multiple_appenders/LoggerProConfig.pas @@ -8,11 +8,11 @@ interface function Log: ILogWriter; implementation - uses LoggerPro.FileAppender, LoggerPro.ConsoleAppender, LoggerPro.OutputDebugStringAppender, + LoggerPro.MaskingAppender, LoggerPro.Builder; var @@ -38,12 +38,18 @@ procedure SetupLogger; // - Multiple appenders (File, Console, OutputDebugString) // - Conditional log level based on DEBUG/RELEASE build // - WithDefaultLogLevel to set minimum level for all appenders + // - Using TLoggerProMaskingAppender to mask sensitive data + // + // TLoggerProMaskingAppender is a decorator that masks sensitive data: + // - Masks 11-digit Chinese phone numbers (e.g., 138****5678) + // - Masks password values (e.g., password=****) + // - Regular expressions are pre-compiled in constructor for performance // _Log := LoggerProBuilder .WithDefaultLogLevel(LOG_LEVEL) - .WriteToFile.Done - .WriteToConsole.Done - .WriteToOutputDebugString.Done + .AddAppender(TLoggerProMaskingAppender.Create(TLoggerProFileAppender.Create)) + .AddAppender(TLoggerProMaskingAppender.Create(TLoggerProConsoleAppender.Create)) + .AddAppender(TLoggerProMaskingAppender.Create(TLoggerProOutputDebugStringAppender.Create)) .Build; // ============================================================================ diff --git a/samples/common/MainFormU.dfm b/samples/common/MainFormU.dfm index 968817c..fd4d904 100644 --- a/samples/common/MainFormU.dfm +++ b/samples/common/MainFormU.dfm @@ -65,4 +65,13 @@ object MainForm: TMainForm TabOrder = 5 OnClick = Button6Click end + object Button7: TButton + Left = 294 + Top = 71 + Width = 280 + Height = 57 + Caption = 'Test Masking (Phone & Password)' + TabOrder = 6 + OnClick = Button7Click + end end diff --git a/samples/common/MainFormU.pas b/samples/common/MainFormU.pas index 29be8a0..8ad9f53 100644 --- a/samples/common/MainFormU.pas +++ b/samples/common/MainFormU.pas @@ -22,12 +22,14 @@ TMainForm = class(TForm) Button4: TButton; Button5: TButton; Button6: TButton; + Button7: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); + procedure Button7Click(Sender: TObject); private { Private declarations } public @@ -109,4 +111,15 @@ procedure TMainForm.Button6Click(Sender: TObject); Log.Fatal('This is an fatal message with TAG2', 'TAG2'); end; +procedure TMainForm.Button7Click(Sender: TObject); +begin + Log.Debug('User login attempt with phone: 13812345678', 'MASKING_TEST'); + Log.Info('User registration with phone: 15987654321', 'MASKING_TEST'); + Log.Warn('Password reset request for user with phone: 18600001111', 'MASKING_TEST'); + Log.Error('Login failed: username=admin&password=secret123', 'MASKING_TEST'); + Log.Fatal('Database connection failed: password=dbpass456', 'MASKING_TEST'); + Log.Debug('Multiple phones: 13812345678 and 15987654321', 'MASKING_TEST'); + Log.Info('User data: phone=18600001111&password=mysecret', 'MASKING_TEST'); +end; + end.