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 the first version of 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. 
  • PrintDocument
  • ExportXML
  • ExportToExcel
  • saveToRTF
  • ItemViewLoaded
  • IssueViewLoaded 
  • Login

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:
  • DeleteItem
  • DeletePart
  • DeleteIssue
  • CreateUser
  • UserActivation (activate/deactivate)
  • DeleteUser
  • LoginCount

User Activity Statistics

The following operations in the server are included in the log file. 



The printing of a Document or Report. 

For Documents: 

For Reports: 


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: 


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


Viewing a public issue view.

Example Action Log Entries

{ "time": "2021-02-23 08:31:18.8698", "seqId": "0", "sessionId": "924", "ip": "", "userId": "x0E000000015DE52D", "username": "stacey", "email": "stacey.hwasser@systemite.se", "appName": "swExplorer.exe", "action": { "type": "PrintDocument", "item": "x04000000015D363F" } }

{ "time": "2021-02-23 08:37:34.3452", "seqId": "0", "sessionId": "924", "ip": "", "userId": "x0E000000015DE52D", "username": "stacey", "email": "stacey.hwasser@systemite.se", "appName": "swExplorer.exe", "action": { "type": "ExportXML", "item": "x04000000015D363F" } }

{ "time": "2021-02-23 08:39:06.2881", "seqId": "0", "sessionId": "924", "ip": "", "userId": "x0E000000015DE52D", "username": "stacey", "email": "stacey.hwasser@systemite.se", "appName": "swExplorer.exe", "action": { "type": "SaveGrid", "item": "x04000000015B20D6" } }

{ "time": "2021-02-23 08:35:51.4091", "seqId": "0", "sessionId": "924", "ip": "", "userId": "x0E000000015DE52D", "username": "stacey", "email": "stacey.hwasser@systemite.se", "appName": "swExplorer.exe", "action": { "type": "SaveDocument", "item": "x0400000001582EF5" } }

Issues view
{ "time": "2020-02-03 15:43:03.2179", "seqId": "0", "sessionId": "1", "ip": "", "userId": "x0E00000000000008", "username": "system", "appName": "swExplorer.exe", "action": { "type": "ItemViewLoaded", "view": "Issues", "loadTime": "00:00:00.188", "item": "x0400000000000D90", "previousView": "Grid" } }

{ "time": "2020-02-03 15:43:41.2481", "seqId": "0", "sessionId": "1", "ip": "", "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": "", "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": "", "userId": "x0E00000000000009", "username": "admin", "appName": "swExplorer.exe", "action": { "type": "ItemViewLoaded", "view": "XXXGraph", "loadTime": "00:00:00.232", "item": "x04000000000002A8", "previousView": "SWExtension.CompletePartTypes.ItemView1Content" } }


The following deletion operations are logged. 


An item is deleted from the server.  


A part is deleted from the server.


An issue is deleted from the server. 


A user account is activated or deactivated.


A user account is created


A user account is deleted.

Example Call Log Entries

{ "time": "2021-02-23 08:26:42.4524", "seqId": "2250", "sessionId": "924", "ip": "", "userId": "x0E000000015DE52D", "username": "stacey", "email": "stacey.hwasser@systemite.se", "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": "", "userId": "x0E000000015DE52D", "username": "stacey", "email": "stacey.hwasser@systemite.se", "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": "", "userId": "x0E000000015DE52D", "username": "stacey", "email": "stacey.hwasser@systemite.se", "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": "", "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": "", "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": "", "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": "", "userId": "x0E000000003B2A61", "username": "admin", "appName": "swAdmin2", "call": { "type": "DeleteUser", "id": "x0E000000015DE5A0", "name": "jane.smith", "isActive": "True" } }


Usage Statistics

The following usage statistics are logged.


A client login to the server.


  • 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": "", "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": "" } }

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.


  • 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


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.