
Introduction
A small bug tracking system, easy to implement and efficient.
Background
The system uses a PHP file and a SQLite database on a remote server to read and write errors captured.
Using the Code
To send an error, you simply have to make a POST request to the file bugs.php, specifying the parameters "program", "error", and "text". For example, to send all the non captured Exceptions in a program, you could do something like this:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.ThreadException +=
new
System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.Run(new Form1());
}
static void Application_ThreadException(object sender,
System.Threading.ThreadExceptionEventArgs e) {
SendException(e.Exception);
}
static void CurrentDomain_UnhandledException(object sender,
UnhandledExceptionEventArgs e) {
SendException((Exception)e.ExceptionObject);
}
static void SendException(Exception error) {
System.Net.WebClient webclient = new System.Net.WebClient();
System.Collections.Specialized.NameValueCollection postData =
new System.Collections.Specialized.NameValueCollection(5);
postData.Add("program", "Example version " +
Application.ProductVersion);
postData.Add("error", error.GetType().Name);
postData.Add("text", error.ToString());
webclient.UploadValues(new
Uri("http://www.example.com/bugs.php"), postData); }
To know the errors that have been sent, you can access them easily through any RSS reader, which allows viewing in a short time, and easily and conveniently. For example, if your PHP file is in www.example.com/bugs.php, you can add that URL to your favorite feed reader to keep informed of the errors that occurs in your application.
Update
Now you can set a password in the PHP file to prevent anyone can read the error log. Furthermore, it has functionality to delete individual records or the complete database.