mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 08:50:15 +01:00
* 🔧 feat: Enhance logging configuration for production and debug environments * 🔒 feat: Implement encryption and decryption functions for sensitive values in ActionService with URL encoding/decoding * refactor: optimize action service for agent tools * refactor: optimize action processing for Assistants API * fix: handle case where agent is not found in loadAgent function * refactor: improve error handling in API calls by throwing new Error with logAxiosError output * chore: bump @librechat/agents to 2.3.95, fixes "Invalid tool call structure: No preceding AIMessage with tool_call_ids" * refactor: enhance error logging in logAxiosError function to include response status * refactor: remove unused useModelSelection hook from Endpoint * refactor: add support for assistants in useSelectorEffects hook * refactor: replace string easing with imported easings in Landing component * chore: remove duplicate translation * refactor: update model selection logic and improve localization for UI elements * refactor: replace endpoint value checks with helper functions for agents and assistants * refactor: optimize display value logic and utilize useMemo for performance improvements * refactor: clean up imports and optimize display/icon value logic in endpoint components, fix spec selection * refactor: enhance error logging in axios utility to include stack traces for better debugging * refactor: update logging configuration to use DEBUG_LOGGING and streamline log level handling * refactor: adjust className for export menu button to improve layout consistency and remove unused title prop from ShareButton * refactor: update import path for logAxiosError utility to improve module organization and clarity * refactor: implement debounced search value setter in ModelSelectorContext for improved performance
46 lines
1.7 KiB
JavaScript
46 lines
1.7 KiB
JavaScript
const { logger } = require('~/config');
|
|
|
|
/**
|
|
* Logs Axios errors based on the error object and a custom message.
|
|
*
|
|
* @param {Object} options - The options object.
|
|
* @param {string} options.message - The custom message to be logged.
|
|
* @param {import('axios').AxiosError} options.error - The Axios error object.
|
|
* @returns {string} The log message.
|
|
*/
|
|
const logAxiosError = ({ message, error }) => {
|
|
let logMessage = message;
|
|
try {
|
|
const stack = error.stack || 'No stack trace available';
|
|
|
|
if (error.response?.status) {
|
|
const { status, headers, data } = error.response;
|
|
logMessage = `${message} The server responded with status ${status}: ${error.message}`;
|
|
logger.error(logMessage, {
|
|
status,
|
|
headers,
|
|
data,
|
|
stack,
|
|
});
|
|
} else if (error.request) {
|
|
const { method, url } = error.config || {};
|
|
logMessage = `${message} No response received for ${method ? method.toUpperCase() : ''} ${url || ''}: ${error.message}`;
|
|
logger.error(logMessage, {
|
|
requestInfo: { method, url },
|
|
stack,
|
|
});
|
|
} else if (error?.message?.includes('Cannot read properties of undefined (reading \'status\')')) {
|
|
logMessage = `${message} It appears the request timed out or was unsuccessful: ${error.message}`;
|
|
logger.error(logMessage, { stack });
|
|
} else {
|
|
logMessage = `${message} An error occurred while setting up the request: ${error.message}`;
|
|
logger.error(logMessage, { stack });
|
|
}
|
|
} catch (err) {
|
|
logMessage = `Error in logAxiosError: ${err.message}`;
|
|
logger.error(logMessage, { stack: err.stack || 'No stack trace available' });
|
|
}
|
|
return logMessage;
|
|
};
|
|
|
|
module.exports = { logAxiosError };
|