💽 feat: Add CONSOLE_JSON for deploying to GCP K8S env (#2146)

* Add CONSOLE_JSON

* Update example env

* Moved to utils
This commit is contained in:
Ivan Dachev 2024-03-27 16:07:04 +02:00 committed by GitHub
parent 57d1f12574
commit d4b0af3dba
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 90 additions and 17 deletions

View file

@ -23,6 +23,13 @@ DOMAIN_SERVER=http://localhost:3080
NO_INDEX=true
#===============#
# JSON Logging #
#===============#
# Use when process console logs in cloud deployment like GCP/AWS
CONSOLE_JSON=false
#===============#
# Debug Logging #
#===============#

View file

@ -5,7 +5,15 @@ const { redactFormat, redactMessage, debugTraverse } = require('./parsers');
const logDir = path.join(__dirname, '..', 'logs');
const { NODE_ENV, DEBUG_LOGGING = true, DEBUG_CONSOLE = false } = process.env;
const { NODE_ENV, DEBUG_LOGGING = true, DEBUG_CONSOLE = false, CONSOLE_JSON = false } = process.env;
const useConsoleJson =
(typeof CONSOLE_JSON === 'string' && CONSOLE_JSON?.toLowerCase() === 'true') ||
CONSOLE_JSON === true;
const useDebugConsole =
(typeof DEBUG_CONSOLE === 'string' && DEBUG_CONSOLE?.toLowerCase() === 'true') ||
DEBUG_CONSOLE === true;
const levels = {
error: 0,
@ -33,7 +41,7 @@ const level = () => {
const fileFormat = winston.format.combine(
redactFormat(),
winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
winston.format.timestamp({ format: () => new Date().toISOString() }),
winston.format.errors({ stack: true }),
winston.format.splat(),
// redactErrors(),
@ -99,14 +107,20 @@ const consoleFormat = winston.format.combine(
}),
);
if (
(typeof DEBUG_CONSOLE === 'string' && DEBUG_CONSOLE?.toLowerCase() === 'true') ||
DEBUG_CONSOLE === true
) {
if (useDebugConsole) {
transports.push(
new winston.transports.Console({
level: 'debug',
format: winston.format.combine(fileFormat, debugTraverse),
format: useConsoleJson
? winston.format.combine(fileFormat, debugTraverse, winston.format.json())
: winston.format.combine(fileFormat, debugTraverse),
}),
);
} else if (useConsoleJson) {
transports.push(
new winston.transports.Console({
level: 'info',
format: winston.format.combine(fileFormat, winston.format.json()),
}),
);
} else {

21
utils/docker/docker-build.sh Executable file
View file

@ -0,0 +1,21 @@
#!/bin/bash
[ "$1" = -x ] && shift && set -x
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd ${DIR}/../..
TAG=$1
if [[ -z "${TAG}" ]]; then
TAG=${LIBRE_CHAT_DOCKER_TAG}
fi
if [[ -z "${TAG}" ]]; then
TAG=latest
fi
LOCAL_DOCKER_IMG=librechat:${TAG}
set -e
docker build -t ${LOCAL_DOCKER_IMG} .

31
utils/docker/docker-push.sh Executable file
View file

@ -0,0 +1,31 @@
#!/bin/bash
[ "$1" = -x ] && shift && set -x
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd ${DIR}/../..
TAG=$1
if [[ -z "${TAG}" ]]; then
TAG=${LIBRE_CHAT_DOCKER_TAG}
fi
if [[ -z "${TAG}" ]]; then
TAG=latest
fi
LOCAL_DOCKER_IMG=librechat:${TAG}
if [[ -z "${DOCKER_REMOTE_REGISTRY}" ]]; then
echo "DOCKER_REMOTE_REGISTRY is not set" >&2
exit 1
fi
REMOTE_DOCKER_IMG=${DOCKER_REMOTE_REGISTRY}/${LOCAL_DOCKER_IMG}
set -e
docker tag ${LOCAL_DOCKER_IMG} ${REMOTE_DOCKER_IMG}
docker push ${REMOTE_DOCKER_IMG}