
Sedge - Automated Error Reporting Application
A slight digression
It so happened that recently I have been developing programs working in conjunction with various equipment. At the previous work, these were robots and testing stations for the semiconductor industry, at the current one, mass spectrometers for chemistry and medicine. It would seem that completely different industries and the purpose of the programs, but from the point of view of the developer there are many common points.
The typical configuration with which we work can be described as follows: the station to which the client computer is connected. A basic application is installed on the computer that interacts with the equipment and provides interfaces for collecting data. These interfaces are used by a dozen vertical applications needed to solve specific user problems. To solve one problem usually requires the interaction of two or three applications. This entire set of applications depends on numerous configuration files and generates a large amount of reports and data.
This long introduction was necessary in order to explain why when an error occurs in the system, for its localization it is important for us to know the state of the system as accurately as possible. The error report may include several dozen files - logs, configuration files, data files and projects. To explain to the user, over the phone, how to put it all together is not a pleasant experience.
If you are in a similar situation, then you may need a program for automating the creation of error reporting - Sedge . With it, you can interview the user about the error that occurred, automatically generate a report that includes user information, system data, all the necessary files, pack and send it.
How it works
To understand how Sedge works, two concepts are important - Suite (a set of applications) and Application (an application). A set of applications can be described in one or more .sedge files and defines common properties for a set of related programs, such as the user interface, shared files, and the method for sending a report.
For example, your company may have a basic service responsible for accessing data and two programs for processing and displaying this data. Then, the set consists of three applications and can be divided into three configuration files: main.sedge, which determines what should be included in the report in case of an error in any of the applications, app1.sedge and app2.sedge, which specify additional report parameters specific to for the corresponding application. The app1.sedge and app2.sedge files can be added or removed during installation or uninstallation of programs.
The configuration file completely determines the behavior of the program. It sets the steps of the wizard, which files should be added to the report, what information and how it will be presented in the HTML report.
Simple configuration file example
* This source code was highlighted with Source Code Highlighter.
The first step of the wizard

One of the pages of the report created according to this configuration

Sources of information for the report: screenshots, registry, automatically collected files, information about the system, memory, processor, list of running processes, information provided by the user (description of the problem, data files, etc.).
Since the reporting scenarios can vary greatly depending on the application, the program has ample opportunities for customization and expansion. Easy enough, you can create your own wizard steps or information sources, for example, if you need to get data from a database, which is not supported by the program by default. Examples of creating extensions are available along with the source code of the program.
The appearance of the report can also be changed, since the template is specified using HTML and CSS. Any text (interface, messages) is available for replacement or localization. By default, English and Russian interfaces are supported.
Program Information
Platform: .NET Framework 2.0 / C # 3.0
License: MIT
Status: Beta
Website: sedge.codeplex.com