Logging
Using the Default ConsoleLogger
To enable logging inside the framework a logger must be passed to the agent config. A simple ConsoleLogger can be imported from the framework.
import type { InitConfig } from '@aries-framework/core'
import { ConsoleLogger, LogLevel } from '@aries-framework/core'
const agentConfig: InitConfig = {
// ... other config properties ...
logger: new ConsoleLogger(LogLevel.info),
}
Creating your own Logger
For more advanced use cases the Logger interface can be implemented. See the example below.
import { Logger, LogLevel } from '@aries-framework/core'
class MyCustomLogger implements Logger {
public logLevel: LogLevel
public constructor(logLevel: LogLevel = LogLevel.off) {
this.logLevel = logLevel
}
public test(message: string, data?: Record<string, any>): void {
console.log(message, data)
}
public trace(message: string, data?: Record<string, any>): void {
console.log(message, data)
}
public debug(message: string, data?: Record<string, any>): void {
console.log(message, data)
}
public info(message: string, data?: Record<string, any>): void {
console.log(message, data)
}
public warn(message: string, data?: Record<string, any>): void {
console.log(message, data)
}
public error(message: string, data?: Record<string, any>): void {
console.log(message, data)
}
public fatal(message: string, data?: Record<string, any>): void {
console.log(message, data)
}
}
Indy Logs
To enable logging in the underlying Rust framework, either setLogger or setDefaultLogger must be called on the indy dependency, as seen here.
The setLogger and setDefaultLogger methods have only been implemented in the Node.JS wrapper of the indy sdk. This won't work when importing from @aries-framework/react-native
The easiest way to do this from AFJ is through the indy property of agentDependencies.
import { agentDependencies } from '@aries-framework/node'
agentDependencies.indy.setDefaultLogger('trace')
// OR
agentDependencies.indy.setLogger((level, target, message, modulePath, file, line) => {
console.log('libindy said:', level, target, message, modulePath, file, line)
})
WARNING: You can only set the logger once. Call indy_set_default_logger, indy_set_logger, not both. Once it's been set, libindy won't let you change it.
You can also set the environment variable RUST_LOG to log at specified log levels.
See https://crates.io/crates/env_logger for more information.