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. 
  • 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. 


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.