Want to find out which views are used most or maybe not used at all? Or, who is printing a document and when? The TcpSubServer log file offers a configurable option for logging specific user operations and usage statistics. The actions, events and calls currently included in the log are listed below. The events and calls from both the client application and the API will be included, whereas only actions performed in the client application will be logged. They can prove to be useful information for Administrators.
Note: If a mirror server is in use, it would have to have its own statistics log for logging the following non-database operations of the users logged in to the mirror server.
The statistics log on the main server will include the following database operations done on the mirror server(s). They are not included in mirror server statistics logs:
|
User Activity Statistics
The following operations in the server are included in the log file.
Actions
PrintDocument
The printing of a Document or Report.
For Documents:
For Reports:
ExportXML
The export of XML files.
For XML generation:
For XML Export:
ExportToExcel (SaveGrid)
The export of data to MS Excel (or csv) from a configurable grid.
saveToRTF (SaveDocument)
The saving of a Document or Report to an RTF and RVF file save a SysW document or report to RTF
For Documents:
For Reports:
ItemViewLoaded
One of the following views has been loaded. The name of the previously loaded view is also provided.
- Configure the explorer views, i.e., Coverage, Part list editor
- Configurable views - config item, i.e., Chart, Graph, Grid, Report
- Extension views, e.g., HARA
- Project view- issues, i.e., public views
IssueViewLoaded
Viewing the item Issues view.
Example Action Log Entries
{ "time": "2021-02-23 08:31:18.8698", "seqId": "0", "sessionId": "924", "ip": "127.0.0.1", "userId": "x0E000000015DE52D", "username": "stacey", "email": "[email protected]", "appName": "swExplorer.exe", "action": { "type": "PrintDocument", "item": "x04000000015D363F" } } { "time": "2021-02-23 08:37:34.3452", "seqId": "0", "sessionId": "924", "ip": "127.0.0.1", "userId": "x0E000000015DE52D", "username": "stacey", "email": "[email protected]", "appName": "swExplorer.exe", "action": { "type": "ExportXML", "item": "x04000000015D363F" } } { "time": "2021-02-23 08:39:06.2881", "seqId": "0", "sessionId": "924", "ip": "127.0.0.1", "userId": "x0E000000015DE52D", "username": "stacey", "email": "[email protected]", "appName": "swExplorer.exe", "action": { "type": "SaveGrid", "item": "x04000000015B20D6" } } { "time": "2021-02-23 08:35:51.4091", "seqId": "0", "sessionId": "924", "ip": "127.0.0.1", "userId": "x0E000000015DE52D", "username": "stacey", "email": "[email protected]", "appName": "swExplorer.exe", "action": { "type": "SaveDocument", "item": "x0400000001582EF5" } } Issues view { "time": "2020-02-03 15:43:03.2179", "seqId": "0", "sessionId": "1", "ip": "127.0.0.1", "userId": "x0E00000000000008", "username": "system", "appName": "swExplorer.exe", "action": { "type": "ItemViewLoaded", "view": "Issues", "loadTime": "00:00:00.188", "item": "x0400000000000D90", "previousView": "Grid" } } Overview { "time": "2020-02-03 15:43:41.2481", "seqId": "0", "sessionId": "1", "ip": "127.0.0.1", "userId": "x0E00000000000008", "username": "system", "appName": "swExplorer.exe", "action": { "type": "ItemViewLoaded", "view": "Overview", "loadTime": "00:00:00.131", "item": "x0400000000000D90", "previousView": "Issues" } } Extension view { "time": "2020-02-03 15:48:09.2060", "seqId": "0", "sessionId": "4", "ip": "127.0.0.1", "userId": "x0E00000000000009", "username": "admin", "appName": "swExplorer.exe", "action": { "type": "ItemViewLoaded", "view": "SWExtension.CompletePartTypes.ItemView1Content", "loadTime": "00:00:00.176", "item": "x04000000000002A8", "previousView": "Overview" } } Configured view { "time": "2020-02-03 15:49:02.7921", "seqId": "0", "sessionId": "4", "ip": "127.0.0.1", "userId": "x0E00000000000009", "username": "admin", "appName": "swExplorer.exe", "action": { "type": "ItemViewLoaded", "view": "XXXGraph", "loadTime": "00:00:00.232", "item": "x04000000000002A8", "previousView": "SWExtension.CompletePartTypes.ItemView1Content" } } Issue view in Project { "time": "2022-10-24 20:17:06.1276", "seqId": "0", "sessionId": "9", "ip": "127.0.0.1", "userId": "x0E0000000001EB2B", "username": "john.doe", "appName": "swExplorer.exe", "action": { "type": "IssueViewLoaded", "view": "Change Issues", "loadTime": "00:00:00.028" } }
Calls
The following deletion operations are logged.
deleteItem
An item is deleted from the server.
deletePart
A part is deleted from the server.
deleteIssue
An issue is deleted from the server.
UserActivation
A user account is activated or deactivated.
CreateUser
A user account is created.
DeleteUser
A user account is deleted.
Example Call Log Entries
{ "time": "2021-02-23 08:26:42.4524", "seqId": "2250", "sessionId": "924", "ip": "127.0.0.1", "userId": "x0E000000015DE52D", "username": "stacey", "email": "[email protected]", "appName": "swExplorer.exe", "call": { "type": "DeleteItem", "id": "x04000000015DE561", "name": "Test", "sid": "SPR" } } { "time": "2021-02-23 08:26:42.4524", "seqId": "2250", "sessionId": "924", "ip": "127.0.0.1", "userId": "x0E000000015DE52D", "username": "stacey", "email": "[email protected]", "appName": "swExplorer.exe", "call": { "type": "DeletePart", "id": "x15000000015DE575", "name": "test", "sid": "IDI", "owner": "Test" } } { "time": "2021-02-23 08:26:06.9380", "seqId": "1851", "sessionId": "924", "ip": "127.0.0.1", "userId": "x0E000000015DE52D", "username": "stacey", "email": "[email protected]", "appName": "swExplorer.exe", "call": { "type": "DeleteIssue", "id": "x2D000000015DE52F", "name": "new", "issueType": "Issue", "project": "SystemWeaver improvements" } } { "time": "2021-02-23 08:24:30.6851", "seqId": "1742", "sessionId": "923", "ip": "127.0.0.1", "userId": "x0E000000003B2A61", "username": "admin", "appName": "swAdmin2", "call": { "type": "UserActivation", "id": "x0E000000015DE59E", "name": "john.doe", "isActive": "False" } } { "time": "2021-02-23 08:25:07.9542", "seqId": "1767", "sessionId": "923", "ip": "127.0.0.1", "userId": "x0E000000003B2A61", "username": "admin", "appName": "swAdmin2", "call": { "type": "UserActivation", "id": "x0E000000015DE5A0", "name": "jane.smith", "isActive": "True" } } { "time": "2021-02-15 15:44:22.1086", "seqId": "414", "sessionId": "2", "ip": "127.0.0.1", "userId": "x0E00000000000008", "username": "system", "appName": "Systemite.SystemWeaver.TcpSubServer", "call": { "type": "CreateUser", "id": "x0E00000000000DF1", "name": "mirror", "isActive": "True" } } { "time": "2021-02-23 08:25:28.8800", "seqId": "1774", "sessionId": "923", "ip": "127.0.0.1", "userId": "x0E000000003B2A61", "username": "admin", "appName": "swAdmin2", "call": { "type": "DeleteUser", "id": "x0E000000015DE5A0", "name": "jane.smith", "isActive": "True" } }
Events
Usage Statistics
The following usage statistics are logged.
Login
A client login to the server.
LoginCount
- A count of the number of user logins (i.e., active connections)
- A count of the number of concurrent Read/Write licenses in use
- A count of the number of concurrent Viewer licenses in use
LoginCount is triggered by a login and logout.
Server Start
The server start and server version # is logged.
Example Event Log Entries
{ "time": "2021-02-15 15:32:14.0692", "seqId": "5", "sessionId": "1", "ip": "127.0.0.1", "userId": "x0E00000000000008", "username": "system", "appName": "Systemite.SystemWeaver.TcpSubServer", "event": { "type": "Login" } } { "time": "2021-02-19 10:37:20.8889", "event": { "type": "LoginCount", "count": "5", "licenseCount": "1", "viewerLicenseCount": "1" } } { "time": "2021-02-15 15:32:01.1642", "event": { "type": "ServerStarted", "serverVersion": "1.52.0.3763" } }
Reading and Analyzing the Log
The Statistics log is JSON formated and can easily be read, analyzed and visualized using an external tool of choice, such as ELK (Elasticsearch, Logstash, and Kibana) which is open source.
One solution is to install, for example, docker and include an image of ELK there.
Recommendations
- The shipper application used, e.g., beats, should be installed on the same server machine as the SystemWeaver server application and Statistics log file
- The docker should be installed on a different server than where SystemWeaver server is installed
Example
In the below example, the log file is read by beats. and the data is then parsed and transformed by Logstash. Next, Elasticsearch is used for searching and analyzing. Finally, results can then be presented using Kibana.