TDASessionLog
Overview
TDASessionLog is used by the TDAServerLog class to collect information related to a session. You may expand the repertoire of the accumulated information:
- derived from the TDASessionLog class.
- set up your own log collector with the TDAServerLog.
Use case
This simple example demonstrates how you can customize the session log:
program TDASessionLog_Demo;
{$APPTYPE CONSOLE}
uses
Classes, ActiveX, SysUtils, uROTypes, uROClasses, uROSessions, uDAServerLog;
type
TSpecialLoginInfo = class (TROComplexType)
private
FAccountNo: integer;
FUserID: string;
published
property UserID : string read FUserID write FUserID;
property AccountNo : integer read FAccountNo write FAccountNo;
end;
TSpecialSessionLog = class (TDASessionLog)
private
FSpecialSessionInfo: string;
//to use our class as aSessionLogClass
//DALogClassesDefinitionHandler declared here for the sake of simplicity
procedure DALogClassesDefinitionHandler (Sender: TDAServerLog;
var aSessionLogClass: TDASessionLogClass;
var aSQLCommandLogClass: TDASQLCommandLogClass;
var aSQLErrorLogClass: TDASQLErrorLogClass);
public
//Only to setup DALogClassesDefinitionHandler
constructor Create; reintroduce;
published
property SpecialSessionInfo : string read FSpecialSessionInfo write FSpecialSessionInfo;
end;
{ TSpecialSessionLog }
constructor TSpecialSessionLog.Create;
begin
end;
procedure TSpecialSessionLog.DALogClassesDefinitionHandler(
Sender: TDAServerLog; var aSessionLogClass: TDASessionLogClass;
var aSQLCommandLogClass: TDASQLCommandLogClass;
var aSQLErrorLogClass: TDASQLErrorLogClass);
begin
aSessionLogClass := TSpecialSessionLog;
end;
type
//Just a trick to emulate component loading
TLoadedAccessor = class (TComponent)
public
procedure Loaded; override;
end;
{ TLoadedAccessor }
procedure TLoadedAccessor.Loaded;
begin
inherited;
end;
procedure doDemo;
var
dummy : TSpecialSessionLog;
session : TROSession;
loginInfo : TSpecialLoginInfo;
serverLog : TDAServerLog;
begin
//insides of DA SDK
session := TROSession.Create (NewGuid);
serverLog := TDAServerLog.Create (nil);
//to hook OnLogClassesDefinition (you set it in the Object Inspector)
dummy := TSpecialSessionLog.Create;
serverLog.OnLogClassesDefinition := dummy.DALogClassesDefinitionHandler;
//Emulation of a component loading -> fires OnLogClassesDefinition
TLoadedAccessor (serverLog).Loaded;
serverLog.Active := true;
loginInfo := TSpecialLoginInfo.Create;
loginInfo.FUserID := 'Special User ID';
loginInfo.FAccountNo := 123;
with serverLog.AddSessionLog (session, loginInfo) AS TSpecialSessionLog do
SpecialSessionInfo := 'Some special session info';
WriteLn (serverLog.FindSessionLog (session).ContentAsString);
dummy.Free;
serverLog.Free;
session.Free;
end;
begin
try
CoInitialize (nil);
doDemo;
except on E : Exception do
WriteLn ('Exception: ', E.Message);
end;
end.
Location
- Unit: uDAServerLog.pas
- Ancestry: TCollectionItem | TROComplexType | TDALogItem | TDASessionLog
constructor Create reintroduce overload virtual (declared in TROComplexType)
Creates a new instance.
constructor Create
constructor Create (TCollection) overload override (declared in TROComplexType)
Creates a new instance with given parameter.
constructor Create(aCollection: TCollection)
Parameters:
- aCollection: collection
constructor Create (TDAServerLog, TROSession) reintroduce (declared in TDALogItem)
Creates a new instance with given parameters.
constructor Create(aServerLog: TDAServerLog; aSession: TROSession)
Parameters:
- aServerLog: References to the TDAServerLog object that stores this log item.
- aSession: References to the session object.
constructor Create (TDAServerLog, TROSession, TROComplexType)
Constructs an instance for the specified TDAServerLog and TROSession with the associated aLoginInfo
property bag.
constructor Create(aServerLog: TDAServerLog; aSession: TROSession; aLoginInfo: TROComplexType)
Parameters:
- aServerLog: Passed to TDALogItem.Create
- aSession: Passed to TDALogItem.Create
- aLoginInfo: Stored into LoginInfo
Assign override (declared in TROComplexType)
Copies data from a given source.
procedure Assign(Source: TPersistent)
Parameters:
- Source: Instance whose properties will be copied
AssignLoginInfo protected virtual
procedure AssignLoginInfo(aLoginInfo: TROComplexType)
Parameters:
- aLoginInfo:
AssignSession protected virtual (declared in TDALogItem)
Reads the SessionID
property from the provided session object. If aSession
is nil, the empty GUID will be assigned to the SessionID
.
procedure AssignSession(aSession: TROSession)
Parameters:
- aSession: Specified session.
AssignTo override (declared in TROComplexType)
Copies the properties of an object to a destination object.
procedure AssignTo(iDest: TPersistent)
Parameters:
- iDest: destination object.
Clone (declared in TROComplexType)
Creates and returns a second copy of the struct.
The new instance will be a deep copy of the original struct, all nested members that are arrays, structs or binaries will be duplicated as part of the cloning process, so that the new instance and its members will be completely independent from the original class.
function Clone: TROComplexType
ContentAsJson (declared in TROComplexType)
property ContentAsJson: UnicodeString read
ContentAsString (declared in TROComplexType)
Returns the structure of the type in a string format.
property ContentAsString: string read
ContentAsXml (declared in TROComplexType)
Returns the XML structure of the type in a string format.
property ContentAsXml: ROUTF8String read
CreationTime (declared in TDALogItem)
Holds the time of the log item creation. This property is automatically set at object creation.
property CreationTime: TDateTime read
FieldCount (declared in TROComplexType)
property FieldCount: Integer read
FieldInfo (declared in TROComplexType)
property FieldInfo[Index: Integer]: PTypeInfo read
FieldName (declared in TROComplexType)
property FieldName[Index: Integer]: string read
FreeInternalProperties protected virtual (declared in TROComplexType)
procedure FreeInternalProperties
GetAttributeCount virtual (declared in TROComplexType)
Returns the number of custom attributes defined for the class.
class function GetAttributeCount: Integer
GetAttributeName virtual (declared in TROComplexType)
Returns the name of custom attribute defined for the class, with the specified index.
class function GetAttributeName(aIndex: Integer): string
Parameters:
- aIndex: The index of attribute.
GetAttributeValue virtual (declared in TROComplexType)
Returns the value of custom attribute defined for the class, with the specified index.
class function GetAttributeValue(aIndex: Integer): string
Parameters:
- aIndex: The index of attribute.
GetContentAsJson (declared in TROComplexType)
function GetContentAsJson(aIncludeExtraInfo: Boolean): UnicodeString
Parameters:
- aIncludeExtraInfo:
GetContentAsXml (declared in TROComplexType)
function GetContentAsXml(aOffset: Integer): ROUTF8String
Parameters:
- aOffset:
GetFieldNames (declared in TROComplexType)
procedure GetFieldNames(aList: TStrings)
Parameters:
- aList:
GetFieldValue (declared in TROComplexType)
function GetFieldValue(const aFieldName: string): Variant
Parameters:
- aFieldName:
LoginInfo
Published property which provides access to specific login information as explained in Session Management.
It is a readonly property whose value is determined by the aLoginInfo
of the Create or the AssignLoginInfo.
property LoginInfo: TROComplexType read
ReadComplex virtual (declared in TROComplexType)
Deserializes current class instance using provided serializer.
procedure ReadComplex(ASerializer: TObject)
Parameters:
- ASerializer: Data source (type TROSerializer).
SaveToJson protected virtual (declared in TROComplexType)
procedure SaveToJson(const aRoot: TROJSONValue; aIncludeExtraInfo: Boolean)
Parameters:
- aRoot:
- aIncludeExtraInfo:
SaveToXml protected virtual (declared in TROComplexType)
procedure SaveToXml(const aNode: TROConverterNode)
Parameters:
- aNode:
ServerLog (declared in TDALogItem)
References to the TDAServerLog object that stores this log item.
property ServerLog: TDAServerLog read
SessionID (declared in TDALogItem)
Holds the unique session GUID.
property SessionID: TGUID read
SessionIDAsString (declared in TDALogItem)
Returns a string representation of the session GUID.
property SessionIDAsString: string read
SetFieldValue (declared in TROComplexType)
procedure SetFieldValue(const aFieldName: string; const aValue: Variant)
Parameters:
- aFieldName:
- aValue:
SmartAssign (declared in TROComplexType)
Copies specific data from a given source.
procedure SmartAssign(Source: TPersistent; TypeKinds: TTypeKinds)
Parameters:
- Source: Instance whose properties will be copied
- TypeKinds: Specifies which properties should be copied
TryGetAttribute (declared in TROComplexType)
class function TryGetAttribute(aName: string; out aValue: string): Boolean
Parameters:
- aName:
- aValue:
WriteComplex virtual (declared in TROComplexType)
Serializes current class instance using provided serializer.
procedure WriteComplex(ASerializer: TObject)
Parameters:
- ASerializer: Data sink (type TROSerializer)
ContentAsJson (declared in TROComplexType)
property ContentAsJson: UnicodeString read
ContentAsString (declared in TROComplexType)
Returns the structure of the type in a string format.
property ContentAsString: string read
ContentAsXml (declared in TROComplexType)
Returns the XML structure of the type in a string format.
property ContentAsXml: ROUTF8String read
CreationTime (declared in TDALogItem)
Holds the time of the log item creation. This property is automatically set at object creation.
property CreationTime: TDateTime read
FieldCount (declared in TROComplexType)
property FieldCount: Integer read
FieldInfo (declared in TROComplexType)
property FieldInfo[Index: Integer]: PTypeInfo read
FieldName (declared in TROComplexType)
property FieldName[Index: Integer]: string read
LoginInfo
Published property which provides access to specific login information as explained in Session Management.
It is a readonly property whose value is determined by the aLoginInfo
of the Create or the AssignLoginInfo.
property LoginInfo: TROComplexType read
ServerLog (declared in TDALogItem)
References to the TDAServerLog object that stores this log item.
property ServerLog: TDAServerLog read
SessionID (declared in TDALogItem)
Holds the unique session GUID.
property SessionID: TGUID read
SessionIDAsString (declared in TDALogItem)
Returns a string representation of the session GUID.
property SessionIDAsString: string read
GetAttributeCount virtual (declared in TROComplexType)
Returns the number of custom attributes defined for the class.
class function GetAttributeCount: Integer
GetAttributeName virtual (declared in TROComplexType)
Returns the name of custom attribute defined for the class, with the specified index.
class function GetAttributeName(aIndex: Integer): string
Parameters:
- aIndex: The index of attribute.
GetAttributeValue virtual (declared in TROComplexType)
Returns the value of custom attribute defined for the class, with the specified index.
class function GetAttributeValue(aIndex: Integer): string
Parameters:
- aIndex: The index of attribute.
TryGetAttribute (declared in TROComplexType)
class function TryGetAttribute(aName: string; out aValue: string): Boolean
Parameters:
- aName:
- aValue:
constructor Create reintroduce overload virtual (declared in TROComplexType)
Creates a new instance.
constructor Create
constructor Create (TCollection) overload override (declared in TROComplexType)
Creates a new instance with given parameter.
constructor Create(aCollection: TCollection)
Parameters:
- aCollection: collection
constructor Create (TDAServerLog, TROSession) reintroduce (declared in TDALogItem)
Creates a new instance with given parameters.
constructor Create(aServerLog: TDAServerLog; aSession: TROSession)
Parameters:
- aServerLog: References to the TDAServerLog object that stores this log item.
- aSession: References to the session object.
constructor Create (TDAServerLog, TROSession, TROComplexType)
Constructs an instance for the specified TDAServerLog and TROSession with the associated aLoginInfo
property bag.
constructor Create(aServerLog: TDAServerLog; aSession: TROSession; aLoginInfo: TROComplexType)
Parameters:
- aServerLog: Passed to TDALogItem.Create
- aSession: Passed to TDALogItem.Create
- aLoginInfo: Stored into LoginInfo
Assign override (declared in TROComplexType)
Copies data from a given source.
procedure Assign(Source: TPersistent)
Parameters:
- Source: Instance whose properties will be copied
AssignLoginInfo protected virtual
procedure AssignLoginInfo(aLoginInfo: TROComplexType)
Parameters:
- aLoginInfo:
AssignSession protected virtual (declared in TDALogItem)
Reads the SessionID
property from the provided session object. If aSession
is nil, the empty GUID will be assigned to the SessionID
.
procedure AssignSession(aSession: TROSession)
Parameters:
- aSession: Specified session.
AssignTo override (declared in TROComplexType)
Copies the properties of an object to a destination object.
procedure AssignTo(iDest: TPersistent)
Parameters:
- iDest: destination object.
Clone (declared in TROComplexType)
Creates and returns a second copy of the struct.
The new instance will be a deep copy of the original struct, all nested members that are arrays, structs or binaries will be duplicated as part of the cloning process, so that the new instance and its members will be completely independent from the original class.
function Clone: TROComplexType
FreeInternalProperties protected virtual (declared in TROComplexType)
procedure FreeInternalProperties
GetContentAsJson (declared in TROComplexType)
function GetContentAsJson(aIncludeExtraInfo: Boolean): UnicodeString
Parameters:
- aIncludeExtraInfo:
GetContentAsXml (declared in TROComplexType)
function GetContentAsXml(aOffset: Integer): ROUTF8String
Parameters:
- aOffset:
GetFieldNames (declared in TROComplexType)
procedure GetFieldNames(aList: TStrings)
Parameters:
- aList:
GetFieldValue (declared in TROComplexType)
function GetFieldValue(const aFieldName: string): Variant
Parameters:
- aFieldName:
ReadComplex virtual (declared in TROComplexType)
Deserializes current class instance using provided serializer.
procedure ReadComplex(ASerializer: TObject)
Parameters:
- ASerializer: Data source (type TROSerializer).
SaveToJson protected virtual (declared in TROComplexType)
procedure SaveToJson(const aRoot: TROJSONValue; aIncludeExtraInfo: Boolean)
Parameters:
- aRoot:
- aIncludeExtraInfo:
SaveToXml protected virtual (declared in TROComplexType)
procedure SaveToXml(const aNode: TROConverterNode)
Parameters:
- aNode:
SetFieldValue (declared in TROComplexType)
procedure SetFieldValue(const aFieldName: string; const aValue: Variant)
Parameters:
- aFieldName:
- aValue:
SmartAssign (declared in TROComplexType)
Copies specific data from a given source.
procedure SmartAssign(Source: TPersistent; TypeKinds: TTypeKinds)
Parameters:
- Source: Instance whose properties will be copied
- TypeKinds: Specifies which properties should be copied
WriteComplex virtual (declared in TROComplexType)
Serializes current class instance using provided serializer.
procedure WriteComplex(ASerializer: TObject)
Parameters:
- ASerializer: Data sink (type TROSerializer)