Software has ever been quite complex and it has always been a hard task to find and eliminate all bugs, especially those, that happen only on customer's computers. Good logging is a common approach to get a software free of errors soon.
The program then loggs in case of errors and warnings, such as invalid function arguments, first chance exceptions or any other unexpected program behavior. Only stack traces are logged, which are the involved function calls that have lead to this error, but no program data is ever collected.
By using sophisticated logging techniques,
we can have a stable version so much sooner
This feature is currently only implemented in the latest ProjectPlanner Pro 2015 release. Other products will follow with their upcoming releases.
When you start a software with this feature for the first time, you will be asked to enable logging. Please allow and help to get the software free of bugs faster.
You can later change this setting somewhere in the program's options dialog.
We decided to go with logentries.com as our online-logging service provider. This is, where the log events are stored, transferred encrypted and in the moment as they happen.
So when you notice any traffic to this host, or when you get warned by your firewall, you'll know what it is and that it is intended.
- As soon as a program is completely error-free, no log data is written at all.
- Logging is not used to collect statistical data.
- No machine ID, license key, or any other ID that allows conclusions about the user or the license, are ever transmitted.
- Logging can be deactivated.
Appendix: A typical log entry
08/03/2015 08:04:11 [Error] Error: "Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index", Stack: GetStackTrace LogError Unsubscribe CleanupManagedResources Dispose Dispose ForEach CleanupManagedResources Dispose Dispose CleanupManagedResources Dispose Dispose <ClearItems>b__c ForEach ClearItems set_Resources Restore Redo Execute RunInternal Run ExecuteWithThreadLocal ExecuteEntry Dispatch