Configure SDK logging
Learn how to configure logging in the MATTR Verifier SDKs, including log levels, callback handlers, and accessing log files across iOS, Android, and React Native platforms.
The MATTR Verifier SDKs include a built-in logging system that records internal SDK operations. This is useful for debugging integration issues, monitoring SDK behavior, and capturing diagnostic information during development and testing.
By default, SDK logs are stored on the device. The SDK itself does not transmit logs to any external service, although your application can choose to forward log events elsewhere if you register a callback.
What information the SDK can log
The SDK can log information about its internal operations, including errors and warnings encountered during SDK operations.
All log entries include the log level and a descriptive message. This information helps you diagnose issues and understand how the SDK operates within your application.
Log levels
The SDK supports the following log levels, ordered from most to least verbose:
| Level | Description |
|---|---|
Verbose | Fine-grained informational events, most detailed output. |
Debug | Detailed information useful during development. |
Info | General informational messages about SDK operations. |
Warning | Potentially harmful situations or unexpected behavior (Warn in Android). |
Error | Error events that might still allow the SDK to continue running. |
Assert | Severe error events that indicate a critical failure (Android only). |
Off | Disables logging entirely. |
The SDK uses the configured log level as a threshold: it records log events at the specified level
and any less verbose levels. For example, setting the level to Info captures Info, Warning,
Error, and Assert events, but not Debug or Verbose.
Configure logging at initialization
You can configure logging behavior by passing a loggerConfiguration object to the SDK's
initialize method. This configuration accepts two separate log levels:
logLevel: Controls which log events are written to the log file.callbackLogLevel: Controls which log events trigger the optional callback function.
try mobileCredentialVerifier.initialize(
loggerConfiguration: LoggerConfiguration(
logLevel: .Info,
callbackLogLevel: .Warning
)
)logLevel: Sets the minimum level for writing log entries to the log file. Defaults to.Off.callbackLogLevel: Sets the minimum level for invoking the callback closure. Defaults to.Off.
Refer to the
LoggerConfiguration
reference documentation for additional details.
mobileCredentialVerifier.initialize(
loggerConfiguration = Logger.LoggerConfiguration(
logLevel = Logger.LogLevel.INFO,
callbackLogLevel = Logger.LogLevel.WARN
),
// ...
)logLevel: Sets the minimum level for writing log entries to the log file and Logcat. Defaults toLogger.LogLevel.OFF.callbackLogLevel: Sets the minimum level for invoking the callback function. Defaults toLogger.LogLevel.OFF.logDir: Optional. Specifies a local directory to store log files. If not provided, logs won't be stored to file.
Refer to the
Logger.LoggerConfiguration
reference documentation for additional details.
import { LogLevel } from "@mattrglobal/mobile-credential-verifier-react-native"
const initializeResult = await mobileCredentialVerifier.initialize({
loggerConfiguration: {
logLevel: LogLevel.Info,
callbackLogLevel: LogLevel.Warn,
},
})
if (initializeResult.isErr()) {
const { error } = initializeResult
// handle error scenarios
return
}logLevel: Sets the minimum level for writing log entries to the log file and console. Defaults toLogLevel.Off.callbackLogLevel: Sets the minimum level for invoking the callback function. Defaults toLogLevel.Off.logDir: Optional. Specifies a directory to store log files. On iOS, a default directory is used. On Android, logs won't be stored to file if not provided.
Refer to the
LoggerConfiguration
reference documentation for additional details.
Handle log events with a callback
You can register a callback function during initialization to receive log events in real time. This allows your application to process log events as they occur, for example to forward them to a custom logging service, display them in a debug console, or filter specific events for monitoring.
The callback is only invoked for log events at or above the callbackLogLevel threshold.
try mobileCredentialVerifier.initialize(
loggerConfiguration: LoggerConfiguration(
logLevel: .Info,
callbackLogLevel: .Warning,
callback: { logEvent in
print("[\(logEvent.level)] \(logEvent.message)")
}
)
)The callback receives a
LogEvent
object with the following properties:
level: TheLogLevelof the event.message: A string describing the log event.
mobileCredentialVerifier.initialize(
loggerConfiguration = Logger.LoggerConfiguration(
logLevel = Logger.LogLevel.INFO,
callbackLogLevel = Logger.LogLevel.WARN,
callback = { priority, tag, message, throwable ->
Log.d("VerifierSDK", "[$tag] $message")
}
),
// ...
)The callback function receives the following parameters:
priority: An integer representing the log priority level.tag: An optional string tag identifying the log source.message: A string describing the log event.throwable: An optionalThrowableassociated with the log event (for error-level logs).
import { LogLevel } from "@mattrglobal/mobile-credential-verifier-react-native"
const initializeResult = await mobileCredentialVerifier.initialize({
loggerConfiguration: {
logLevel: LogLevel.Info,
callbackLogLevel: LogLevel.Warn,
callback: (log) => {
console.log(`[${log.logLevel}] ${log.tag ?? ""}: ${log.message ?? ""}`)
},
},
})
if (initializeResult.isErr()) {
const { error } = initializeResult
// handle error scenarios
return
}The callback receives a log object with the following properties:
logLevel: TheLogLevelof the event.message: An optional string describing the log event.tag: An optional string tag identifying the log source.
Access the log file
The SDK writes log entries to a file that you can access for debugging and diagnostics. The log file contains entries from the previous two calendar days.
let logFilePath = mobileCredentialVerifier.getCurrentLogFilePath()The
getCurrentLogFilePath
method returns the file path as a string, or nil if no log file is available.
To read the logs, use the returned file path to load the file contents into Data, then decode the
data into text and split it into individual log messages as needed.
val logFilePath = mobileCredentialVerifier.getLog()The
getLog
method returns the full path of the log file (with a .log extension), or null if no log file is
available.
The file contains log entries from the previous two calendar days.
const logFilePath = await mobileCredentialVerifier.getCurrentLogFilePath()The
getCurrentLogFilePath
method returns a Promise resolving to the log file path string, or null if no log file is
available.
How would you rate this page?
Last updated on