Further loglevel updates

1. Fix missed endpoints
2. Exclude console.log from loglevel
This commit is contained in:
Cohee 2025-02-02 15:40:37 +02:00
parent 76d1661768
commit 0c8a11e28b
12 changed files with 48 additions and 49 deletions

View File

@ -179,7 +179,7 @@ async function sendClaudeRequest(request, response) {
additionalHeaders['anthropic-beta'] = 'prompt-caching-2024-07-31';
}
console.log('Claude request:', requestBody);
console.debug('Claude request:', requestBody);
const generateResponse = await fetch(apiUrl + '/messages', {
method: 'POST',
@ -199,21 +199,21 @@ async function sendClaudeRequest(request, response) {
} else {
if (!generateResponse.ok) {
const generateResponseText = await generateResponse.text();
console.log(color.red(`Claude API returned error: ${generateResponse.status} ${generateResponse.statusText}\n${generateResponseText}\n${divider}`));
console.warn(color.red(`Claude API returned error: ${generateResponse.status} ${generateResponse.statusText}\n${generateResponseText}\n${divider}`));
return response.status(generateResponse.status).send({ error: true });
}
/** @type {any} */
const generateResponseJson = await generateResponse.json();
const responseText = generateResponseJson?.content?.[0]?.text || '';
console.log('Claude response:', generateResponseJson);
console.debug('Claude response:', generateResponseJson);
// Wrap it back to OAI format + save the original content
const reply = { choices: [{ 'message': { 'content': responseText } }], content: generateResponseJson.content };
return response.send(reply);
}
} catch (error) {
console.log(color.red(`Error communicating with Claude: ${error}\n${divider}`));
console.error(color.red(`Error communicating with Claude: ${error}\n${divider}`));
if (!response.headersSent) {
return response.status(500).send({ error: true });
}
@ -383,7 +383,7 @@ async function sendMakerSuiteRequest(request, response) {
const candidates = generateResponseJson?.candidates;
if (!candidates || candidates.length === 0) {
let message = 'Google AI Studio API returned no candidate';
console.log(message, generateResponseJson);
console.warn(message, generateResponseJson);
if (generateResponseJson?.promptFeedback?.blockReason) {
message += `\nPrompt was blocked due to : ${generateResponseJson.promptFeedback.blockReason}`;
}
@ -699,7 +699,7 @@ async function sendDeepSeekRequest(request, response) {
signal: controller.signal,
};
console.log('DeepSeek request:', requestBody);
console.debug('DeepSeek request:', requestBody);
const generateResponse = await fetch(apiUrl + '/chat/completions', config);
@ -708,16 +708,16 @@ async function sendDeepSeekRequest(request, response) {
} else {
if (!generateResponse.ok) {
const errorText = await generateResponse.text();
console.log(`DeepSeek API returned error: ${generateResponse.status} ${generateResponse.statusText} ${errorText}`);
console.warn(`DeepSeek API returned error: ${generateResponse.status} ${generateResponse.statusText} ${errorText}`);
const errorJson = tryParse(errorText) ?? { error: true };
return response.status(500).send(errorJson);
}
const generateResponseJson = await generateResponse.json();
console.log('DeepSeek response:', generateResponseJson);
console.debug('DeepSeek response:', generateResponseJson);
return response.send(generateResponseJson);
}
} catch (error) {
console.log('Error communicating with DeepSeek API: ', error);
console.error('Error communicating with DeepSeek API: ', error);
if (!response.headersSent) {
response.send({ error: true });
} else {

View File

@ -301,12 +301,12 @@ router.post('/onering', jsonParser, async (request, response) => {
const url = secretUrl || ONERING_URL_DEFAULT;
if (!url) {
console.log('OneRing URL is not configured.');
console.warn('OneRing URL is not configured.');
return response.sendStatus(400);
}
if (!secretUrl && url === ONERING_URL_DEFAULT) {
console.log('OneRing URL is using default value.', ONERING_URL_DEFAULT);
console.info('OneRing URL is using default value.', ONERING_URL_DEFAULT);
}
if (request.body.lang === 'pt-BR' || request.body.lang === 'pt-PT') {
@ -326,7 +326,7 @@ router.post('/onering', jsonParser, async (request, response) => {
params.append('from_lang', from_lang);
params.append('to_lang', to_lang);
console.log('Input text: ' + text);
console.debug('Input text: ' + text);
const fetchUrl = new URL(url);
fetchUrl.search = params.toString();
@ -337,17 +337,17 @@ router.post('/onering', jsonParser, async (request, response) => {
if (!result.ok) {
const error = await result.text();
console.log('OneRing error: ', result.statusText, error);
console.warn('OneRing error: ', result.statusText, error);
return response.sendStatus(500);
}
/** @type {any} */
const data = await result.json();
console.log('Translated text: ' + data.result);
console.debug('Translated text: ' + data.result);
return response.send(data.result);
} catch (error) {
console.log('Translation error: ' + error.message);
console.error('Translation error: ' + error.message);
return response.sendStatus(500);
}
});
@ -358,12 +358,12 @@ router.post('/deeplx', jsonParser, async (request, response) => {
const url = secretUrl || DEEPLX_URL_DEFAULT;
if (!url) {
console.log('DeepLX URL is not configured.');
console.warn('DeepLX URL is not configured.');
return response.sendStatus(400);
}
if (!secretUrl && url === DEEPLX_URL_DEFAULT) {
console.log('DeepLX URL is using default value.', DEEPLX_URL_DEFAULT);
console.info('DeepLX URL is using default value.', DEEPLX_URL_DEFAULT);
}
const text = request.body.text;

View File

@ -211,9 +211,9 @@ router.post('/change-name', jsonParser, async (request, response) => {
router.post('/reset-step1', jsonParser, async (request, response) => {
try {
const resetCode = String(crypto.randomInt(1000, 9999));
console.info();
console.info(color.magenta(`${request.user.profile.name}, your account reset code is: `) + color.red(resetCode));
console.info();
console.log();
console.log(color.magenta(`${request.user.profile.name}, your account reset code is: `) + color.red(resetCode));
console.log();
RESET_CACHE.set(request.user.profile.handle, resetCode);
return response.sendStatus(204);
} catch (error) {

View File

@ -125,9 +125,9 @@ router.post('/recover-step1', jsonParser, async (request, response) => {
}
const mfaCode = String(crypto.randomInt(1000, 9999));
console.info();
console.info(color.blue(`${user.name}, your password recovery code is: `) + color.magenta(mfaCode));
console.info();
console.log();
console.log(color.blue(`${user.name}, your password recovery code is: `) + color.magenta(mfaCode));
console.log();
MFA_CACHE.set(user.handle, mfaCode);
return response.sendStatus(204);
} catch (error) {

View File

@ -63,7 +63,7 @@ export default function whitelistMiddleware(whitelistMode, listen) {
const userAgent = req.headers['user-agent'];
if (listen && !knownIPs.has(clientIp)) {
console.log(color.yellow(`New connection from ${clientIp}; User Agent: ${userAgent}\n`));
console.info(color.yellow(`New connection from ${clientIp}; User Agent: ${userAgent}\n`));
knownIPs.add(clientIp);
// Write access log
@ -84,7 +84,7 @@ export default function whitelistMiddleware(whitelistMode, listen) {
const ipDetails = forwardedIp
? `${clientIp} (forwarded from ${forwardedIp})`
: clientIp;
console.log(
console.warn(
color.red(
`Blocked connection from ${clientIp}; User Agent: ${userAgent}\n\tTo allow this connection, add its IP address to the whitelist or disable whitelist mode by editing config.yaml in the root directory of your SillyTavern installation.\n`,
),

View File

@ -840,7 +840,7 @@ export function requireAdminMiddleware(request, response, next) {
export async function createBackupArchive(handle, response) {
const directories = getUserDirectories(handle);
console.log('Backup requested for', handle);
console.info('Backup requested for', handle);
const archive = archiver('zip');
archive.on('error', function (err) {
@ -849,7 +849,7 @@ export async function createBackupArchive(handle, response) {
// On stream closed we can end the request
archive.on('end', function () {
console.log('Archive wrote %d bytes', archive.pointer());
console.info('Archive wrote %d bytes', archive.pointer());
response.end(); // End the Express response
});

View File

@ -170,7 +170,7 @@ export async function extractFileFromZipBuffer(archiveBuffer, fileExtension) {
zipfile.readEntry();
zipfile.on('entry', (entry) => {
if (entry.fileName.endsWith(fileExtension) && !entry.fileName.startsWith('__MACOSX')) {
console.log(`Extracting ${entry.fileName}`);
console.info(`Extracting ${entry.fileName}`);
zipfile.openReadStream(entry, (err, readStream) => {
if (err) {
reject(err);
@ -218,7 +218,7 @@ export async function getImageBuffers(zipFilePath) {
zipfile.on('entry', (entry) => {
const mimeType = mime.lookup(entry.fileName);
if (mimeType && mimeType.startsWith('image/') && !entry.fileName.startsWith('__MACOSX')) {
console.log(`Extracting ${entry.fileName}`);
console.info(`Extracting ${entry.fileName}`);
zipfile.openReadStream(entry, (err, readStream) => {
if (err) {
reject(err);
@ -448,7 +448,7 @@ export function forwardFetchResponse(from, to) {
let statusText = from.statusText;
if (!from.ok) {
console.log(`Streaming request failed with status ${statusCode} ${statusText}`);
console.warn(`Streaming request failed with status ${statusCode} ${statusText}`);
}
// Avoid sending 401 responses as they reset the client Basic auth.
@ -473,7 +473,7 @@ export function forwardFetchResponse(from, to) {
});
from.body.on('end', function () {
console.log('Streaming request finished');
console.info('Streaming request finished');
to.end();
});
} else {
@ -518,7 +518,7 @@ export function makeHttp2Request(endpoint, method, body, headers) {
});
req.on('end', () => {
console.log(data);
console.debug(data);
resolve(data);
});
});
@ -701,7 +701,6 @@ export function setupLogLevel() {
const logLevel = getConfigValue('minLogLevel', LOG_LEVELS.DEBUG);
globalThis.console.debug = logLevel <= LOG_LEVELS.DEBUG ? console.debug : () => {};
globalThis.console.log = logLevel <= LOG_LEVELS.INFO ? console.log : () => {};
globalThis.console.info = logLevel <= LOG_LEVELS.INFO ? console.info : () => {};
globalThis.console.warn = logLevel <= LOG_LEVELS.WARN ? console.warn : () => {};
globalThis.console.error = logLevel <= LOG_LEVELS.ERROR ? console.error : () => {};

View File

@ -13,7 +13,7 @@ export async function getCohereBatchVector(texts, isQuery, directories, model) {
const key = readSecret(directories, SECRET_KEYS.COHERE);
if (!key) {
console.log('No API key found');
console.warn('No API key found');
throw new Error('No API key found');
}
@ -34,14 +34,14 @@ export async function getCohereBatchVector(texts, isQuery, directories, model) {
if (!response.ok) {
const text = await response.text();
console.log('API request failed', response.statusText, text);
console.warn('API request failed', response.statusText, text);
throw new Error('API request failed');
}
/** @type {any} */
const data = await response.json();
if (!Array.isArray(data?.embeddings?.float)) {
console.log('API response was not an array');
console.warn('API response was not an array');
throw new Error('API response was not an array');
}

View File

@ -36,8 +36,8 @@ async function getExtrasVectorImpl(text, apiUrl, apiKey) {
url.pathname = '/api/embeddings/compute';
}
catch (error) {
console.log('Failed to set up Extras API call:', error);
console.log('Extras API URL given was:', apiUrl);
console.error('Failed to set up Extras API call:', error);
console.debug('Extras API URL given was:', apiUrl);
throw error;
}
@ -62,7 +62,7 @@ async function getExtrasVectorImpl(text, apiUrl, apiKey) {
if (!response.ok) {
const text = await response.text();
console.log('Extras request failed', response.statusText, text);
console.warn('Extras request failed', response.statusText, text);
throw new Error('Extras request failed');
}

View File

@ -23,7 +23,7 @@ export async function getMakerSuiteVector(text, directories) {
const key = readSecret(directories, SECRET_KEYS.MAKERSUITE);
if (!key) {
console.log('No Google AI Studio key found');
console.warn('No Google AI Studio key found');
throw new Error('No Google AI Studio key found');
}
@ -48,7 +48,7 @@ export async function getMakerSuiteVector(text, directories) {
if (!response.ok) {
const text = await response.text();
console.log('Google AI Studio request failed', response.statusText, text);
console.warn('Google AI Studio request failed', response.statusText, text);
throw new Error('Google AI Studio request failed');
}

View File

@ -20,14 +20,14 @@ export async function getNomicAIBatchVector(texts, source, directories) {
const config = SOURCES[source];
if (!config) {
console.log('Unknown source', source);
console.error('Unknown source', source);
throw new Error('Unknown source');
}
const key = readSecret(directories, config.secretKey);
if (!key) {
console.log('No API key found');
console.warn('No API key found');
throw new Error('No API key found');
}
@ -47,14 +47,14 @@ export async function getNomicAIBatchVector(texts, source, directories) {
if (!response.ok) {
const text = await response.text();
console.log('API request failed', response.statusText, text);
console.warn('API request failed', response.statusText, text);
throw new Error('API request failed');
}
/** @type {any} */
const data = await response.json();
if (!Array.isArray(data?.embeddings)) {
console.log('API response was not an array');
console.warn('API response was not an array');
throw new Error('API response was not an array');
}

View File

@ -31,14 +31,14 @@ export async function getOpenAIBatchVector(texts, source, directories, model = '
const config = SOURCES[source];
if (!config) {
console.log('Unknown source', source);
console.error('Unknown source', source);
throw new Error('Unknown source');
}
const key = readSecret(directories, config.secretKey);
if (!key) {
console.log('No API key found');
console.warn('No API key found');
throw new Error('No API key found');
}
@ -57,7 +57,7 @@ export async function getOpenAIBatchVector(texts, source, directories, model = '
if (!response.ok) {
const text = await response.text();
console.log('API request failed', response.statusText, text);
console.warn('API request failed', response.statusText, text);
throw new Error('API request failed');
}
@ -65,7 +65,7 @@ export async function getOpenAIBatchVector(texts, source, directories, model = '
const data = await response.json();
if (!Array.isArray(data?.data)) {
console.log('API response was not an array');
console.warn('API response was not an array');
throw new Error('API response was not an array');
}