fix: add defensive checks for undefined args parameter

- Add check for args being undefined or not an array in formatMessage
- Add default empty array parameter to log method
- Prevents 'Cannot read property length of undefined' error
- Fixes issue when logger is called from async callbacks in React Native
This commit is contained in:
Chris Daßler
2025-10-05 06:38:05 +02:00
parent 0384b45e64
commit 7f874b4756
2 changed files with 6 additions and 5 deletions

View File

@@ -93,7 +93,8 @@ export class LoggerComponent implements ILoggerComponent {
// Format the main message
let formattedMessage = message;
if (args.length > 0) {
// Defensive check: ensure args is defined and is an array
if (args && Array.isArray(args) && args.length > 0) {
// Handle object arguments
const argStrings = args.map((arg) => {
// Special handling for Error objects
@@ -122,10 +123,10 @@ export class LoggerComponent implements ILoggerComponent {
return `${COLORS.DIM}[${timestamp}]${COLORS.RESET} ${levelColor}[${levelName}]${COLORS.RESET} ${COLORS.BRIGHT}[${this.context}]${COLORS.RESET} ${formattedMessage}`;
}
private log(level: LogLevel, message: string, args: unknown[]): void {
private log(level: LogLevel, message: string, args: unknown[] = []): void {
if (level < this.level) return;
const formattedMessage = this.formatMessage(level, message, args);
const formattedMessage = this.formatMessage(level, message, args || []);
switch (level) {
case LogLevel.TRACE: