The SDK routes HTTP request/response traces and optional diagnostic messages through the Logger interface. CantonRuntime picks a default logger when CantonConfig.logger is omitted: typically FileLogger alone, or CompositeLogger combining FileLogger with ConsoleLogger when debug mode is enabled or CANTON_DEBUG is truthy.
Implement Logger yourself to forward logs to Datadog, Pino, or structured pipelines — only logRequestResponse is required for full HTTP tracing; other methods are optional.
import {
Canton,
ConsoleLogger,
FileLogger,
CompositeLogger,
type Logger,
} from '@fairmint/canton-node-sdk';
Example — inject CompositeLogger
import { Canton, CompositeLogger, ConsoleLogger, FileLogger } from '@fairmint/canton-node-sdk';
const logger = new CompositeLogger([
new FileLogger({ logLevel: 'info', logDir: '/tmp/canton-logs' }),
new ConsoleLogger({ logLevel: 'debug' }),
]);
const canton = new Canton({
network: 'devnet',
provider: '5n',
partyId: 'OWN_PARTY_ID',
logger,
});
await canton.ledger.getVersion();
Logger interface
logRequestResponse(url, request, response): Promise<void>— Called for each HTTP exchange; implementations should redact secrets (built-ins scrub common token keys).- Optional:
debug,info,warn,error— Severity helpers used by SDK warnings (for example empty OAuth client id).
LoggerConfig (used by file/console implementations): enableLogging, logDir, logLevel (error | warn | info | debug).
Implementations
| Class | Behavior |
|---|---|
FileLogger | Appends JSON lines under logDir (default package-relative logs/ or FILE_LOGGER_DIR). Honors DISABLE_FILE_LOGGER to silence disk writes. |
ConsoleLogger | Colorized stdout/stderr output; logRequestResponse truncates large JSON payloads. |
CompositeLogger | Fan-out to every nested logger (Promise.all for request/response logs). |
Pitfalls
- Secrets: Built-in sanitizers redact keys such as
password,access_token,client_secret— extend carefully if your payloads nest secrets under unusual keys. - Performance:
debugmode logs entire bodies — avoid on hot paths in production.
See also
- Canton —
loggeranddebugconstructor fields. - CantonRuntime — default logger selection.