Client

custo diagnostic client (custo manager.exe) and custo Service Center (custoservicecenter.exe) creates on each Start an separated Logfile (Session Logging).

Location: "%PUBLIC%\Roaming\customed\"

File Names: "yyyy-MM-dd.HH-mm-ss.zzz.PID.Application.log" (Example: "2018-01-12.14-31-05.153.6264.customanager.log" or "2018-01-12.14-46-48.960.3924.servicecenter.log")

The Log Files can be viewed with the installed Log Viewer "GamutLogViewer" (Open Source Version, located in "\custo diagnostic client\LogViewer"). If custo diagnostic runs the Log Viewer can be started with "Ctrl-Alt-Shift-F12" and shoes the current Log File in real time.

With "Ctrl-Alt-Shift-F10" the Windows Explorer will be opened in the Log File Directory and mark the current Log File.

Additional Settings

SettingDescriptionInformation
diagclient.custo manager.LogToolPathPath to the Log File ToolDefault: "..\LogViewer\GamutLogViewer.exe"
Here you can setup your own Log File Tool.
diagclient.custo manager.AutoStartLogToolif "true" the Log File Tool will be started automatically when custo manager is startingDefault: false
diagclient.custo manager.KeepLogFileNumberOfDaysNumber of Days to keep the Log FilesDefault: 30



Sample of custo diagnostic client Log
2018-01-12 14:40:09,395 = DEBUG [724] (projekte\custo manager\source\custo manager.cpp:357) {void __thiscall CCustomanagerApp::StartupLog(void)} - Starting version 5.0.1 Build 2166
2018-01-12 14:40:09,395 = DEBUG [724] (projekte\custo manager\source\custo manager.cpp:365) {void __thiscall CCustomanagerApp::StartupLog(void)} - "Terminal" DIAGSRV02 Administrator Windows Version: "8.1" "6.3.9600" "Windows 8.1"
2018-01-12 14:40:09,426 = DEBUG [724] (module\msconfig\source\ms_configwsident.cpp:174) {void __thiscall NCONFIG::CWsIdent::Determine(void)} - PC:   CZYW6D2
2018-01-12 14:40:09,426 = DEBUG [724] (module\msconfig\source\ms_configwsident.cpp:175) {void __thiscall NCONFIG::CWsIdent::Determine(void)} - USER: Administrator
2018-01-12 14:40:09,426 = DEBUG [724] (module\qtrestclient\source\curlconnectionmanager.cpp:17) {__thiscall CurlConnectionManager::CurlConnectionManager(class QObject *)} - CURL Version libcurl/7.54.0 OpenSSL/1.0.2k zlib/1.2.11 nghttp2/1.22.90
2018-01-12 14:40:09,473 = DEBUG [724] (projekte\custo manager\source\custo manager instance.cpp:289) {bool __thiscall CCustomanagerApp::TryToConnectToDiagServerAndCheckAPIVersion(void)} - Connected to "http://CH23VG9.ms-entwicklung.de:8080/diag" API Version:  2
2018-01-12 14:40:09,551 = DEBUG [724] (projekte\custo manager\source\custo manager instance.cpp:148) {int __thiscall CCustomanagerApp::InitInstance(void)} - Qt says that the program needed 171 ms to show the login screen.
2018-01-12 14:40:09,582 = TRACE [724] (module\mscontrols\source\msmessagebox.cpp:590) {enum NCONTROLS::CmsMessageBox::EMessageBoxButtonReturn __thiscall NCONTROLS::CmsMessageBox::RunMessageBox(void)} - MessageBox-ID: "118-4" ; Caption: "Anmeldung an: CZYW6D2"
2018-01-12 14:40:12,067 = TRACE [724] (module\mscontrols\source\msmessagebox.cpp:1163) {void __thiscall NCONTROLS::CmsMessageBox::WorkOnButtonClick(unsigned int,long)} - OK
2018-01-12 14:40:12,114 = DEBUG [724] (projekte\custo manager\source\custo manager instance.cpp:157) {int __thiscall CCustomanagerApp::InitInstance(void)} - From the being, the user needed 2729 ms to login.
2018-01-12 14:40:12,129 = DEBUG [724] (projekte\custo manager\source\custo manager instance.cpp:336) {bool __thiscall CCustomanagerApp::AfterLoginInitialization(void)} - Server version:  "custo diagnostic server master-281 5.0.1"
2018-01-12 14:40:12,129 = DEBUG [724] (projekte\custo manager\source\custo manager instance.cpp:359) {bool __thiscall CCustomanagerApp::AfterLoginInitialization(void)} - Licensed for "Stephan Baldauf" Number: 200643 System serial: "6f520d9d-ff5d-4786-9158-b1e016647cbf" License GUID: "29ab411d-3cc1-48ff-8515-defdc4736aef"
2018-01-12 14:40:12,129 = DEBUG [724] (module\msbaseclass\source\directory.cpp:136) {int __cdecl CmsDirectory::Change(const class QString &,int,int)} - set to current directory:  "c:\\program files (x86)\\custo diagnostic client\\exe\\"
2018-01-12 14:40:12,160 = DEBUG [724] (projekte\custo manager\source\benutzer.cpp:31) {bool __thiscall CCustomanagerApp::OnChangeUser(const class NDiagServer::CUserDTO &)} - User change, new user: "SB"
2018-01-12 14:40:12,160 = DEBUG [724] (projekte\custo manager\source\benutzer.cpp:77) {void __thiscall CCustomanagerApp::OnUserChanged(void)} - User change, new user: "SB"
2018-01-12 14:40:12,160 = TRACE [724] (projekte\custo manager\source\projektsteuerung.cpp:351) {void __thiscall CCustomanagerApp::CloseAllWindows(void)} - close all windows



Server

custo diagnostic server is based on Apache Tomcat 8.0. Please rever to the Tomcat Logging functionality at "https://tomcat.apache.org/tomcat-8.0-doc/logging.html".

Additionally the "diagserver" Application in the Tomcat creates two Logfiles in the starting pahse of the application:
"diagserver-stderr.YYYY-MM-DD.log"
"diagserver-stdout.YYYY-MM-DD.log"

After "diagserver" application has started the Log File will be redirected to "\diagserverdata\log\diagserver.log".

The custo diagnostic server Log File can also be viewed throught the custo service center (from client side). In the lower Area on the Page "Logging → Configuration" you can find Buttons like "Server Log Files save as ..." and "View Server Log Files in Tool".

"Server Log Files save as ..." : Download and Saves the File to the local File System on the Client.
"View Server Log Files in Tool" : Download the Server Log an opens it into the Log File Tool.

Sample of diagserver Log
2018-01-13 12:12:09,741 =  INFO [localhost-startStop-2] (AbstractApplicationContext.java:862) {org.springframework.context.support.AbstractApplicationContext.doClose} - Closing Root WebApplicationContext: startup date [Fri Jan 12 14:46:50 CET 2018]; root of context hierarchy
2018-01-13 12:12:09,756 =  WARN [localhost-startStop-2] (InitDestroyAnnotationBeanPostProcessor.java:161) {org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction} - Invocation of destroy method failed on bean with name 'FTPServer': java.lang.NullPointerException
2018-01-13 12:12:09,772 =  INFO [localhost-startStop-2] (ExecutorConfigurationSupport.java:203) {org.springframework.scheduling.concurrent.ExecutorConfigurationSupport.shutdown} - Shutting down ExecutorService 'DiagSpringScheduler'
2018-01-13 12:12:09,803 =  INFO [localhost-startStop-2] (AbstractEntityManagerFactoryBean.java:462) {org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.destroy} - Closing JPA EntityManagerFactory for persistence unit 'XBAJpaPersistenceUnit'
2018-01-13 12:13:47,308 =  INFO [localhost-startStop-1] (QtTranslationLoader.java:146) {de.customed.diag.translation.QtTranslationLoader.readFrom} - Reading translations from C:\Program Files\custo diagnostic server\languages
2018-01-13 12:13:47,511 =  INFO [localhost-startStop-1] (QtTranslationLoader.java:146) {de.customed.diag.translation.QtTranslationLoader.readFrom} - Reading translations from C:\Program Files\custo diagnostic server\webapps\diag\WEB-INF\classes\languages
2018-01-13 12:13:47,808 =  INFO [localhost-startStop-1] (QtTranslationLoader.java:182) {de.customed.diag.translation.QtTranslationLoader.readFrom} - Read translation for de_DE
2018-01-13 12:13:47,901 =  INFO [localhost-startStop-1] (QtTranslationLoader.java:182) {de.customed.diag.translation.QtTranslationLoader.readFrom} - Read translation for en_US
2018-01-13 12:13:47,917 =  INFO [localhost-startStop-1] (QtTranslationLoader.java:182) {de.customed.diag.translation.QtTranslationLoader.readFrom} - Read translation for es_ES
2018-01-13 12:13:48,651 =  INFO [localhost-startStop-1] (ConfigurationServiceImpl.java:278) {de.customed.diag.config.ConfigurationServiceImpl.setupBeans} - Configuring beans loginServiceImpl, doctorServiceImpl, dataTransferServiceImpl, ECGStreamServiceImpl, automaticEmergencyECGAssignment, deviceServiceImpl, diabetesServiceImpl, evaluationServiceImpl, globalConfiguration, worklistServiceImpl, cleanupServiceImpl, patientVisitServiceImpl, logEntryJPADAO, DICOMServiceImpl, workstationServiceImpl, FTPServer, licenseServiceImpl, integrationServiceImpl, kybeServiceImpl, accentureWebServiceMain, worklistServer, logServiceImpl
2018-01-13 12:13:48,651 =  INFO [localhost-startStop-1] (ConfigurationServiceImpl.java:326) {de.customed.diag.config.ConfigurationServiceImpl.configureField} - Configuration for diagserver.dicom.storagecommitment.enabled is left empty.
2018-01-13 12:13:48,651 =  INFO [localhost-startStop-1] (ConfigurationServiceImpl.java:326) {de.customed.diag.config.ConfigurationServiceImpl.configureField} - Configuration for diagserver.ldap.port is left empty.
2018-01-13 12:13:48,651 =  INFO [localhost-startStop-1] (ConfigurationServiceImpl.java:326) {de.customed.diag.config.ConfigurationServiceImpl.configureField} - Configuration for diagserver.dicom.storagecommitment.port is left empty.
2018-01-13 12:13:48,698 = ERROR [localhost-startStop-1] (CleanupServiceImpl.java:126) {de.customed.diag.service.CleanupServiceImpl.setup} - Could not create path for backups
2018-01-13 12:13:48,698 =  INFO [localhost-startStop-1] (LicenseServiceImpl.java:166) {de.customed.diag.service.LicenseServiceImpl.reinitialize} - System serial: effa26b9-1c95-43f6-a282-81ed6016e5a8
2018-01-13 12:13:49,511 =  INFO [localhost-startStop-1] (ContextLoader.java:325) {org.springframework.web.context.ContextLoader.initWebApplicationContext} - Root WebApplicationContext: initialization completed in 14056 ms
2018-01-13 12:13:58,136 =  INFO [DiagSpringScheduler-13] (LogServiceImpl.java:162) {de.customed.diag.service.LogServiceImpl.logStartup_aroundBody0} - custo diagnostic server master-281 Thu Oct 26 12:43:00 CEST 2017 189830e0da48ac6e39000df84a8bd48d155f3ec4 5.0.0