Warnings, errors and fatal errors are identified by a code. This is a string that has to be unique within the application. This code can for example be used as an index into help pages.
For messages the layer and verbosity level has to be specified. The layer indicates from which layer in the system the message comes, e.g. application, user interface, application library, system library etc. The verbosity level determines whether or not the message will be reported. The user can set the verbosity level of the system; if the verbosity of a message is large enough compared to the system verbosity level, the message will be reported. Note that the verbosity level differs for the different layers; it could be that a sparse message from an application is reported, whereas a sparse message from a library is not.