xtool/contrib/mORMot/SQLite3/Samples/11 - Exception logging/RemoteLogMain.pas

89 lines
2.0 KiB
ObjectPascal

unit RemoteLogMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, SynCommons, SynLog, mORMot, mORMotHttpClient;
type
TMainForm = class(TForm)
grpEvent: TGroupBox;
cbbEvent: TComboBox;
edtText: TEdit;
btnEventSend: TButton;
grpConnection: TGroupBox;
edtServer: TEdit;
lblServer: TLabel;
lblPort: TLabel;
edtPort: TEdit;
lblInfoConnect: TLabel;
btnConnect: TButton;
btnDisconnect: TButton;
procedure btnConnectClick(Sender: TObject);
procedure btnEventSendClick(Sender: TObject);
procedure btnDisconnectClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
fNumber: integer;
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R vista.RES} // includes Win10 manifest - use .RES for linux cross-compilation
{$R *.dfm}
procedure TMainForm.FormCreate(Sender: TObject);
begin
PTypeInfo(TypeInfo(TSynLogInfo))^.EnumBaseType^.AddCaptionStrings(cbbEvent.Items);
SQLite3Log.Family.Level := LOG_VERBOSE;
end;
procedure TMainForm.btnConnectClick(Sender: TObject);
begin
try
Screen.Cursor := crHourGlass;
try
TSQLHttpClient.CreateForRemoteLogging(
AnsiString(edtServer.Text),SQLite3Log,StrToInt(edtPort.Text));
finally
Screen.Cursor := crDefault;
end;
except
on E: Exception do begin
MessageDlg(E.Message,mtError,[mbOk],0);
exit;
end;
end;
grpConnection.Enabled := false;
btnConnect.Enabled := false;
cbbEvent.ItemIndex := Ord(sllInfo);
grpEvent.Show;
btnEventSend.SetFocus;
end;
procedure TMainForm.btnEventSendClick(Sender: TObject);
begin
SQLite3Log.Add.Log(TSynLogInfo(cbbEvent.ItemIndex),
FormatUTF8('% - %',[edtText.Text,fNumber]));
inc(fNumber);
end;
procedure TMainForm.btnDisconnectClick(Sender: TObject);
begin
SQLite3Log.Family.EchoRemoteStop;
grpConnection.Enabled := true;
btnConnect.Enabled := true;
cbbEvent.ItemIndex := Ord(sllInfo);
grpEvent.Hide;
btnConnect.SetFocus;
end;
end.