There are a number of indicators in there to locate it. Most importantly are the executable program where it occurred and the server it's on. The executable name generally is fairly obviously associated with a particular area of CQC (web server, logic server, IV, etc...)
In the case of those programs that can be loaded on more than one host machine, the host name indicates which machine it happened on. For those that can only be loaded on the master server, they'll always show that as the host.
Here's a sample from a log dump:
Code:
11/28 17:42:48-Cathy, CQCServer, MainThread
{
CQCKit, CQCKit_ThisFacility.cpp.2794, Failed/Not Found, Error: 6000/0/0
The CQC Installation Server could not be contacted
<CQCServer> CQCServer_ThisFacility.cpp - 3303
}
It gives you:
1. The time it occurred (11/28 17:42:48)
2. The host on which is occurred (Cathy)
3. The program where it occurred (in this case CQCServer, which is the program that hosts device drivers and maybe a little less obvious a name than the others.)
4. The thread within the program where it failed (MainThread)
5. Then there's the detailed error location info, probably only useful to me
6. Then there's the error description (The CQC Installation Server could not be contacted) This may or may not be meaningful to you, or may or may not provide some hints anyway.
5. There there can be a stack trace, back up the sequence of calls that got you to the error, which is really only of interest to me.
If the problem is in a driver, it'll be in CQCServer and the thread name will include the driver moniker (each one runs within CQCServer on its own thread), and often the actual error will mention the particular driver as well, if it's a driver level error and not something from general purpose code beneath.
Of course if you have doubts, just post the log entries in question and ask. There's no way to make all of the errors something that end users can understand, because they are reporting very technical information. All that really can be done is try to provide some sort of higher level status (like the driver status.) I've thought about various ways that might be done and hopefully can implement some of that in the 5.0 time frame.