The C and C++ API

API Overview, Getting Started Logging, Samples

The majority of Paul Bunyan’s log message creation interface the API is split into the C and C++ API. The C portion fully implements all logging functionality. The C++ portion provides no additional core functionality that is not already available in the C API but simply adds the usual code tightening and conveniences of C++.

The entire API is in static libraries rather than dlls. There were many internal technical issues that required this but the chief factor was the desire to allow vendors to ship logging enabled code without having to install a Paul Bunyan dll as well. (Note that Visual Basic does not support static linking and, as such, a logging-enabled product must ship the redistributable COM server, PBCOM.dll, as part of its installation process.) One of the advantages of using static libraries is that all variables maintained internally exist on a per process per module basis. This includes default components and contexts, initialization states, fail counts, etc. Lastly, the Unicode and ANSI versions of all functions are simultaneously supported in all libraries so that the Unicode and ANSI character sets can be intermixed in code irrespective of the UNICODE preprocessor macro. E.g. PBLogA and PBLogW are always available regardless of build flags.

The API is discussed in the following sections:

Logging a Message

Working With Components and Contexts

Initialization, Diagnostics, and Miscellaneous

Macros and Define Constants