Logger
Use the Logger plugin for the logging of crucial events related to the state management of your store. By enabling the LoggerPlugin
, you can gain insights into store initialization, command execution, and effect execution.
Enabling Logging
To activate the logger feature in signalstory, include the plugin using the exposed useLogger
factory method:
class StoreWithLogger extends Store<MyState> {
constructor() {
super({
initialState: { ... },
name: 'My Store with Logger',
plugins: [
useLogger()
],
});
}
}
Configuration
The useLogger
function accepts an optional configuration object, allowing you to customize the logger behavior. The available option is:
Option | Description | Default Value |
---|---|---|
logFunction | Log function for commands and effects. | console.log |
Logging Events
Once the logger is enabled, it logs events at different stages of the store lifecycle:
init
: Logs store initialization, including the initial state.postprocessCommand
: Logs the execution of commands.preprocessEffect
: Logs the start of effect execution.postprocessEffect
: Logs the completion of effect execution.
Example of logged events:
[My Store with Logger->Init] { ...initialState }
[My Store with Logger->Command] CommandName { ...currentState }
[My Store with Logger->Effect STARTED] EffectName { ...currentState }
[My Store with Logger->Effect FINISHED in 342 ms] EffectName { ...currentState }
Adjust the log content and format by providing a custom log function.
Custom Log Function
You can provide a custom log function to useLogger
for more advanced logging. The log function should have the signature:
type Logger = (message?: unknown, ...optionalParams: unknown[]) => void;
const customLoggerFunction: Logger = (message, ...optionalParams) => {
// Your custom logging logic here
};
// Use it
useLogger({
logFunction: customLoggerFunction,
});