Dynatrace OpenKit logging
There are two different ways to log with OpenKit:
- Configure OpenKit to use the built-in console logger
- Configure OpenKit to use a custom logger implementation
Logging via console logger
OpenKit includes a console logger. By default, any error or warning message is logged to stdout
. When you set a log level, all log events with the same or higher prior levels are logged.
OpenKit uses the following log levels:
For debugging and development. Not recommended for production due to a high volume of log entries.
Warnings encountered in OpenKit library, including API usage problems.
Errors that cannot be handled by OpenKit.
OpenKit openKit = new DynatraceOpenKitBuilder(endpointURL, applicationID, deviceID)
.withLogLevel(LogLevel.DEBUG) // enable Debug, Info, Warning, and Error log events
.build();
IOpenKit openKit = new DynatraceOpenKitBuilder(endpointURL, applicationID, deviceID)
.WithLogLevel(LogLevel.DEBUG)
.Build();
std::shared_pointer<openkit::IOpenKit> openKit =
openkit::DynatraceOpenKitBuilder(endpointURL, applicationID, deviceID)
.withLogLevel(LogLevel::LOG_LEVEL_DEBUG)
.build();
struct OpenKitConfigurationHandle* configurationHandle = createOpenKitConfiguration(endpointURL, applicationID, deviceID);
useDefaultLogLevelForConfiguration(configurationHandle, LOGLEVEL_DEBUG);
struct OpenKitHandle* openKitHandle = createDynatraceOpenKit(configurationHandle);
const openKit = new OpenKitBuilder(endpointURL, applicationID, deviceID)
.withLogLevel(LogLevel.Debug)
.build();
Logging via custom logger
You can also configure OpenKit with a custom logger implementation. Implement a custom logger to log OpenKit messages using the logging framework of your choice.
import com.dynatrace.openkit.api.Logger;
class MyCustomLoggerImpl implements Logger {
// implement interface methods
}
Logger customLogger = new MyCustomLoggerImpl();
OpenKit openKit = new DynatraceOpenKitBuilder(endpointURL, applicationID, deviceID)
.withLogger(customLogger)
.build();
using Dynatrace.OpenKit.API.ILogger;
class MyCustomLoggerImpl : ILogger
{
}
ILogger customLogger = new MyCustomLoggerImpl();
IOpenKit openKit = new DynatraceOpenKitBuilder(endpointURL, applicationID, deviceID)
.WithLogger(customLogger)
.Build();
class MyCustomLoggerImpl : public openkit::ILogger
{
};
std::shared_ptr<openkit::ILogger> customLogger = std::make_shared<MyCustomLoggerImpl>();
std::shared_pointer<openkit::IOpenKit> openKit =
openkit::DynatraceOpenKitBuilder(endpointURL, applicationID, deviceID)
.withLogger(customLogger)
.build();
bool levelEnabledFunction(LOG_LEVEL level)
{
}
void logFunction(LOG_LEVEL level, const char* traceStatement)
{
}
struct LoggerHandle* loggerHandle = createLogger(&levelEnabledFunction, &logFunction);
struct OpenKitConfigurationHandle* configurationHandle = createOpenKitConfiguration(endpointURL, applicationID, deviceID);
useLoggerForConfiguration(configurationHandle, loggerHandle);
struct OpenKitHandle* openKitHandle = createDynatraceOpenKit(configurationHandle);
class MyCustomLoggerFactory implements LoggerFactory {
}
const customLogger = new MyCustomLoggerFactory();
const openKit = new OpenKitBuilder(endpointURL, applicationID, deviceID)
.withLoggerFactory(customLogger)
.build();