Error log

  • Thread starter Thread starter John
  • Start date Start date
J

John

Hi

How can I save a detailed error log in a file so that when my application
crashes the users can email me the log for investigation?

Thanks

Regards
 
You may want to take a look at Microsoft's Exception Management Application
Block.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/emab-rm.asp

If that's a overkill, you can always write exceptions into text file or
write it into XML file or even database.

Try
' Your code
Catch exp As Exception
' Log the exception here
End Try

I would create a component that logs exception and call it from Catch block.

Good luck.

============================
Hayato Iriumi ([email protected])
MCAD for .NET
 
Hi John,

|| How can I save a detailed error log in a file so that
|| when my application crashes the users can email me
|| the log for investigation?

<When> ?? <When> the application crashes ???

SCNR :-))

Regards,
Fergus
 
John,
I think that when you want a detailled log that is availlable when the
program crashes, you have to close the file very often and reopen it
everytime.
I hopes this helps you on the route.
Cor
 
Hi John,

I have a proper answer for you this time. :-)

Windows provides a set of Event Log which it writes to when critical
events occur. It provides another for Applications to write to. Applications
can also create and write to their own. This last option is the route that I
recommend. Your customers can save the log to a text file and send it off to
you.

The logs can be examined from the Desktop menu:
Start/Programs/Administrative Tools/EventViewer. This will open the Management
Console for the Event Logs. From here you can explore the events or print the
whole lot out, etc. [There's no delete, though, as far as I can see. But you
may be able to delete them manually. Mine are in C:\WinNT\.System32\config
(along with the Registry files).]

Creating and writing to the Logs is very easy in VB.NET as the Framework
provides an EventLog class. Here's a Module version but you could easily
create a class which inherits from EventLog.

Public Module ModuleEventLog
Public AppEventLog As New EventLog

Public Sub AppEventLog_Init
Const ksAppName As String = "appFooBar"
Const ksLogName As String = "FooBarLog"

'Register this application as being a source for the log
If Not EventLog.SourceExists (ksAppName) Then
EventLog.CreateEventSource (ksAppName, ksLogName)
End If

AppEventLog.Source = ksAppName
AppEventLog.Log = ksLogName
AppEventLog.WriteEntry ("Starting") 'Optional
End Sub

Public Sub AppEventLog_Close
AppEventLog.Close
AppEventLog.Dispose
End Sub
End Module

Initialise with:
AppEventLog_Init

Write to the Log with:
AppEventLog.WriteEntry ("Merrily logging :-)")

Release with
AppEventLog_Close

Regards,
Fergus
 
Hi again John,

I've just discovered that you can examine the events logs using VS.NET by
opening the Server Explorer. You can also delete them from there.

Regards,
Fergus
 
Fergus,
I did eat my carrots again
How can I save a detailed error log in a file so that when my application
crashes the users can email me the log for investigation?

I think using the system logs is not clever to use in an e-mail.
He beter can make his own file.
Even in the application that with a restart send the mail or an extra
application.
Cor
 
Hi Cor,

|| He'd be better off making his own file.

You can use the system logs to make your own file. That's what my example
does. It uses the system's logging facility but has a log file of its own.
[Try it ;-)]

The trouble with writing your own log, as you pointed out, it that you
have to keep flushing it otherwise you lose the last block when you crash.
This won't occur when using the system logs because once the message is passed
it's out of your hands and you can merrily crash away.

|| Even in the application that with a restart send the
|| mail or an extra application.

It's entirely possible to read your event file and send it automatically.
:-)

Creating Event logs is easy and safe. That's why I recommend it.

Regards,
Fergus
 
Back
Top