Small lyrical digression
It so happened that lately I have been developing programs working in conjunction with various equipment. In 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 programs, but from the point of view of the developer, there are many common points.
A typical configuration with which we work can be described as follows: the station to which the client computer is connected. The computer has a basic application that interacts with the equipment and provides interfaces for data collection. These interfaces use a dozen vertical applications needed to solve specific user tasks. 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. An error report can include several dozen files — logs, configuration files, data and project files. Explaining to the user, on the phone, how to collect all this is not the most pleasant thing.
')
If you are in a similar situation, then
Sedge can be useful for you to automate the generation of error
reports . With it, you can interrogate the user about the error that occurred, automatically generate a report that includes user information, system data, all the necessary files, package and send it.
How it works
Two concepts are important for understanding how Sedge works: Suite (suite of applications) and Application (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, common files, and the report sending method.
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 broken 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 that are 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 specifies the steps of the wizard, what files should be added to the report, what information and how it will be presented in the HTML report.
An example of a simple configuration file
<? xml version ="1.0" encoding ="UTF-8" ? >
< Sedge >
< Suite name ="LunarFrog.TaggedFrog" caption ="TaggedFrog Error Reporting" partial ="no" >
< Schedule >
< Step name ="Screenshot" />
< Step name ="ErrorDetails" />
< Step name ="Contacts" />
< Step name ="Collect" />
</ Schedule >
< Transport name ="Email" >
< Option name ="to" value ="error_mail@company.com" />
< Option name ="subject" value ="Error report" />
</ Transport >
< Report >
< Group name ="UserGroup" caption ="User Information" >
< Page name ="ImagePage" caption ="Screenshot" >
< Temp name ="screenshot" caption ="Screen" />
</ Page >
< Page name ="InfoPage" caption ="Information" >
< Temp name ="ReportDetails" caption ="Details" />
< Temp name ="Contacts" caption ="Contact Information" />
< Temp name ="UserFiles" />
</ Page >
</ Group >
< Group name ="EnvGroup" caption ="Enviroment" >
< Page name ="ProcessesPage" caption ="Processes" >
< Data name ="Processes" />
</ Page >
< Page name ="SystemPage" caption ="System" >
< Data name ="System" />
</ Page >
</ Group >
</ Report >
< Application name ="TaggedFrog" caption ="TaggedFrog" >
< Report >
< Group name ="ApplicationGroup" caption ="Application" >
</ Group >
</ Report >
</ Application >
</ Suite >
</ Sedge >
* This source code was highlighted with Source Code Highlighter .
The first step of the wizard

One of the report pages 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 reporting scenarios can vary greatly depending on the application, the program has extensive customization and extension capabilities. Quite easily you can create your own wizard steps or sources of information, for example, if you need to get data from a database that 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 set using HTML and CSS. Any text (interface, messages) is available for replacement or localization. English and Russian interfaces are supported by default.
Program Information
Platform: .NET Framework 2.0 / C # 3.0
License: MIT
Status: Beta
Website: sedge.codeplex.com