TABLE OF CONTENTS
Location
Logs for the V2U Service that runs on the are found in c:\venue2u\logs
Quick Notes
- Logs are created by date
- New messages are added to the end of the file so it is sorted ascending by time with the newest message at the end of the file.
- Each new message starts with the version and the time to the fraction of a second.
ie 2.0.69.0 | 11:55:23.7737131 | shows that the V2U version is 2.0369.0 and the time is 11:55:23am
- Error messages will have 'error:' in the text. Use search to find the errors quickly.
eg 2.0.73.0 | 14:07:50.1389439 | Unable to get TTWebOrderHeader due to the error:
- multiple lines in a row beginning with ' at' show a stack trace to help pinpoint an error. (see SQL connection issue example below)
- References to TT will be Table Tracking
Common Events
Examples are shortened for quick reference. Check the attached files for full examples from a log.
General notes
- errors pertaining to "Duplicate PLU's' are irrelevant - please ignore.
Sync caused by automated schedule or 'refresh app' button on dashboard
Full example - Sync.txt
- Look for 'Checking Layout' for the start of a sync
- There should be a record for each layout
2.0.73.0 | 05:00:14.4404569 | Checking Layout: MyVIP-12-Main Menu
2.0.73.0 | 05:00:14.5834554 | Duplicate PLU: 31500 found please remove second instance on the keyboard
2.0.73.0 | 05:00:15.6032072 | Layout Time: 1163ms
2.0.73.0 | 05:00:15.6042079 | 33
2.0.73.0 | 05:00:15.6387604 | Skipping sending layouts as they have not changed
2.0.73.0 | 05:00:15.6397591 | GetLayouts took 1326ms
SQL connection issue
Full example - sql connection issue.txt
2.0.73.0 | 14:07:50.1389439 | Unable to get TTWebOrderHeader due to the error: System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) ---> System.ComponentModel.Win32Exception (0x80004005): The system cannot find the file specified
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
Dockets being sent to a kitchen printer
Full example - kitchen print.txt
2.0.69.0 | 11:55:26.3350380 | Message from server: SendPrint
2.0.69.0 | 11:55:26.3360381 | Request Id: e4402888-e4eb-4080-b2ee-5215f64d5262
2.0.69.0 | 11:55:26.3360381 | Sending print to printer: EPSON TM-T82III Receipt
2.0.69.0 | 11:55:26.3360381 | With body of: KITCHEN PRINT
<DOCKET TEXT>
2.0.69.0 | 11:55:26.3370399 | Printing with docket name: V2U Print - ab67f098-e435-4cb3-a5a0-e0de5f0be921
2.0.69.0 | 11:55:26.3830396 | SendPrint Response: true
2.0.69.0 | 11:55:26.3840407 | SendPrint took 47ms
Finalising a sale
Full example - full sale.txt
- ProcessSale messages will come through each time a cart is updated and swiftpos is polled to check for promotions, mix and match, vouchers etc
-
2.0.69.0 | 11:55:25.2510578 | Message from server: ProcessSale
2.0.69.0 | 11:55:25.2510578 | Request Id: 00ba63e6-0f33-48a5-8866-1f68d1eea65d
2.0.69.0 | 11:55:25.2520606 | Received this parameter: 15
2.0.69.0 | 11:55:25.2520606 | ProcessSale for alternative locationId: 15
2.0.69.0 | 11:55:25.2520606 | About to process sale
2.0.69.0 | 11:55:25.3990627 | Processing sale took 146ms
2.0.69.0 | 11:55:25.3990627 | ProcessSale Response: {sale details}
2.0.69.0 | 11:55:25.4000629 | ProcessSale took 147ms
2.0.69.0 | 11:55:25.6387160 | Message from server: SendSale
2.0.69.0 | 11:55:25.6397164 | Request Id: f34dfe8e-c353-4ad5-b72e-e3d6b016cc03
2.0.69.0 | 11:55:25.6397164 | SendSale for locationId: 15
2.0.69.0 | 11:55:25.8207185 | {sale details}
2.0.69.0 | 11:55:25.8217206 | Finalising sale took 181ms
2.0.69.0 | 11:55:25.8217206 | SendSale Response: {sale details}
2.0.69.0 | 11:55:25.8217206 | SendSale took 181ms
Member login/looking up a member's details
Full example - member lookup.txt
2.0.69.0 | 11:55:23.7737131 | Message from server: GetMemberById
2.0.69.0 | 11:55:23.7747137 | Request Id: 28cd70fd-f993-431a-a446-d907afddd6ff
2.0.69.0 | 11:55:23.7747137 | GetMemberById MemberId: 69420
2.0.69.0 | 11:55:23.7757155 | URL: api/Member/69420
2.0.69.0 | 11:55:23.8187154 | Getting member took 43ms
2.0.69.0 | 11:55:23.8197173 | GetMemberById Response: {member details}
2.0.69.0 | 11:55:23.8197173 | GetMemberById took 44ms
2.0.69.0 | 11:55:23.9447131 | Message from server: SendNetPOSRequest
2.0.69.0 | 11:55:23.9457138 | Request Id: f5433342-9e3b-4225-9fc2-20eb52fda865
2.0.69.0 | 11:55:23.9477144 | Sending NetPOS request to: http://127.0.0.1:10101 with method: http://tempuri.org/INetPosService/GetMemberById
2.0.69.0 | 11:55:23.9497146 | SendNetPOSRequest Response: {member details}
2.0.69.0 | 11:55:23.9497146 | SendNetPOSRequest took 1ms
Error Examples
Netpos - Gaming lookup timeout.
Full example - MG timeout
This was an instance where Max Gaming timed out and Venue2U continued attempting to process the sale. There is no timeout message (as of 18/01/2024) but the process sale takes 11 seconds and then reports an 'object reference' error.
Cross referencing to netpos logs shows an MG timeout.
Message from server: ProcessSale
2.0.42.0 | 20:43:25.0977666 | Request Id: d6b0f39b-4415-4b78-ac64-80e5258055df
2.0.42.0 | 20:43:25.0987617 | Received this parameter: 51
2.0.42.0 | 20:43:25.0987617 | ProcessSale for alternative locationId: 51
2.0.42.0 | 20:43:25.0997573 | About to process sale
2.0.42.0 | 20:43:25.1306217 | Processing Sale for locationId: 51
2.0.42.0 | 20:43:29.2017144 | Checking health
2.0.42.0 | 20:43:29.2027100 | Checking NetPOS
2.0.42.0 | 20:43:29.2086858 | NetPOS Status: Running
2.0.42.0 | 20:43:29.2485088 | Checking Terminal
2.0.42.0 | 20:43:29.2505001 | Terminal Status: Connected
2.0.42.0 | 20:43:29.2544826 | Checking Orders
2.0.42.0 | 20:43:29.2554783 | Order Status: 0
2.0.42.0 | 20:43:29.2564762 | Self Printing enabled, overriding healthcheck
2.0.42.0 | 20:43:36.1073339 | Processing sale took 11007ms
2.0.42.0 | 20:43:36.1083288 | ProcessSale Response: "Classification Id is required."
2.0.42.0 | 20:43:36.1093255 | ProcessSale took 11009ms
2.0.42.0 | 20:43:36.4816873 | Message from server: SendSale
2.0.42.0 | 20:43:36.4836777 | Requesting ApiKey for location: 51 clerk: 9999 password: 357677
2.0.42.0 | 20:43:36.5115556 | Response: {"ApiKey":"tW9CJWZIZlroukHTrxoIgIFcS+2jR0Df2sXamuKd6zE0WH8kKZJtlw==","ApiKeyExpiration":20,"ApiVersion":"10.62.7.0"}
2.0.42.0 | 20:43:36.5125506 | Getting API key took 28ms
2.0.42.0 | 20:43:36.5205157 | {"Message":"An error has occurred.","ExceptionMessage":"Object reference not set to an instance of an object.","ExceptionType":"System.NullReferenceException","StackTrace":" at Samford.Web.Api.SaleExtensions.ToWebSale(Sale apiSale)\r\n at Samford.Web.Api.Controllers.SaleController.FinaliseSale(Sale sale)\r\n at lambda_method(Closure , Object , Object[] )\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_2.<GetExecutor>b__2(Object instance, Object[] methodParameters)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Samford.Web.Api.Infrastructure.TokenFilterAttribute.<ExecuteAuthorizationFilterAsync>d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()"}
2.0.42.0 | 20:43:36.5215126 | Finalising sale took 37ms
2.0.42.0 | 20:43:36.5215126 | SendSale Response: {"Message":"An error has occurred.","ExceptionMessage":"Object reference not set to an instance of an object.","ExceptionType":"System.NullReferenceException","StackTrace":" at Samford.Web.Api.SaleExtensions.ToWebSale(Sale apiSale)\r\n at Samford.Web.Api.Controllers.SaleController.FinaliseSale(Sale sale)\r\n at lambda_method(Closure , Object , Object[] )\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_2.<GetExecutor>b__2(Object instance, Object[] methodParameters)\r\n at