Hallo Mavarik,
nein, ich werde das Logging mit lokaler Sqlite und eigener, externer TcpIp-Kommunikation ausbauen.
Ist im Moment nur für Debugging-Zwecke, da reicht das.
AppAnalytics ist wohl auch für andere Zwecke gedacht, und ich denke es ist auch nicht kostenlos.
Rollo
Kannst Du dir alles sparen...
Einfach nutzen mit
Delphi-Quellcode:
Procedure TGlobalLog.Analytics(ASender : TObject;ACategorie,AAction,AText:String;AValue : Double);
var
Context: TCustomEventContext;
begin
if Application.TrackActivity then
begin
Context := TCustomEventContext.Create(ACategorie,AAction,AText,AValue);
Application.AnalyticsManager.RecordActivity(TAppActivity.Custom, ASender, Context);
end;
end;
Und erzeugen mit
Delphi-Quellcode:
AppAnalytics1 := TAppAnalytics.Create(self);
AppAnalytics1.OnPrivacyMessage := AppAnalytics1PrivacyMessage;
AppAnalytics1.ApplicationID := '
MeineApp';
AppAnalytics1.Options := [TAppActivity.AppStart, TAppActivity.AppExit, TAppActivity.ControlFocused, TAppActivity.WindowActivated, TAppActivity.Exception, TAppActivity.Custom];
AppAnalytics1.ServerPort := 81;
AppAnalytics1.AppAnalyticsServer := '
192.168.179.24';
// IP des Servers
AppAnalytics1.ApplicationID := AppName + '
'+Version;
AppAnalytics1.UserID := '
TestUser';
AppAnalytics1.Enabled := true;
Und dann noch einen aufregenden
Indy http Server aufsetzen
Delphi-Quellcode:
procedure TForm68.IdHTTPServer1CommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
Function AddSpace(Const AHelp : String;Max:Integer):String;
begin
Result := AHelp;
while length(Result) < Max do
Result := Result + ' ';
end;
var
Entry,MSG : String;
LogList : TArray<String>;
i : Integer;
begin
Entry := ARequestInfo.Params[8];
LogList := Entry.Split(['|']);
if length(LogList) > 4 then
begin
if (LogList[1] = 'TrackEvent') and (LogList[3] = 'Log')
then begin
MSG := LogList[2]+' '+AddSpace(LogList[1],15)+LogList[5];
end
else begin
MSG := LogList[2]+' '+AddSpace(LogList[1],14);
for i:= 3 to length(LogList)-1 do
MSG := MSG + ' '+LogList[i];
end;
end;
Memo1.Lines.Insert(0,MSG);
if Memo1.Lines.Count > 1000 then
Memo1.Lines.Delete(1000);
AResponseInfo.ContentText := 'OK';
AResponseInfo.ResponseNo := 200;
end;
Fertig