diff --git a/.changeset/fresh-avocados-reply.md b/.changeset/fresh-avocados-reply.md new file mode 100644 index 00000000..7dae3707 --- /dev/null +++ b/.changeset/fresh-avocados-reply.md @@ -0,0 +1,5 @@ +--- +"trifid-core": minor +--- + +Introduce a `server.logFormat` configuration option, to either output JSON or pretty-formated logs. diff --git a/packages/core/config.yaml b/packages/core/config.yaml index 1cc9ef99..64382550 100644 --- a/packages/core/config.yaml +++ b/packages/core/config.yaml @@ -7,6 +7,7 @@ server: listener: port: 8080 logLevel: debug + logFormat: pretty globals: value: config diff --git a/packages/core/index.js b/packages/core/index.js index 9f03c749..74c4fcc9 100644 --- a/packages/core/index.js +++ b/packages/core/index.js @@ -12,6 +12,7 @@ import handler from './lib/config/handler.js' import { defaultHost, defaultLogLevel, + defaultLogFormat, defaultPort, } from './lib/config/default.js' import pluginsAssembler from './lib/plugins/assembler.js' @@ -57,6 +58,9 @@ const trifid = async (config, additionalPlugins = {}) => { const serverOptions = fullConfig?.server?.options || {} + // Template configuration + const template = fullConfig?.template || {} + // Dynamic server configuration const portFromConfig = fullConfig?.server?.listener?.port const port = (portFromConfig === 0 || portFromConfig === '0') ? 0 : (portFromConfig || defaultPort) @@ -65,18 +69,19 @@ const trifid = async (config, additionalPlugins = {}) => { // Logger configuration const logLevel = fullConfig?.server?.logLevel || defaultLogLevel - - // Template configuration - const template = fullConfig?.template || {} - - // Custom logger instance - const logger = pino({ + const logFormat = fullConfig?.server?.logFormat || defaultLogFormat + const loggerConfig = { name: 'trifid-core', level: logLevel, - transport: { + } + if (logFormat === 'pretty') { + loggerConfig.transport = { target: 'pino-pretty', - }, - }) + } + } + + // Custom logger instance + const logger = pino(loggerConfig) const server = fastify({ logger: false, diff --git a/packages/core/lib/config/default.js b/packages/core/lib/config/default.js index e566a426..32a5b200 100644 --- a/packages/core/lib/config/default.js +++ b/packages/core/lib/config/default.js @@ -5,3 +5,4 @@ export const maxDepth = 50 export const defaultPort = 8080 export const defaultHost = '0.0.0.0' export const defaultLogLevel = 'info' +export const defaultLogFormat = 'pretty' diff --git a/packages/core/lib/config/schema.json b/packages/core/lib/config/schema.json index 3b18c71c..e39c1d4a 100644 --- a/packages/core/lib/config/schema.json +++ b/packages/core/lib/config/schema.json @@ -65,6 +65,13 @@ "silent" ] }, + "logFormat": { + "type": "string", + "enum": [ + "json", + "pretty" + ] + }, "options": { "type": "object", "additionalProperties": true diff --git a/packages/core/types/index.js b/packages/core/types/index.js index ee7d5b14..9476d037 100644 --- a/packages/core/types/index.js +++ b/packages/core/types/index.js @@ -25,6 +25,7 @@ * @property {string} [server.listener.host] The host to listen on. * @property {number|string} [server.listener.port] The port to listen on. * @property {"fatal"|"error"|"warn"|"info"|"debug"|"trace"|"silent"} [server.logLevel] The log level. + * @property {"pretty"|"json"} [server.logFormat] The log format. * @property {Object.} [server.options] Server options. * @property {Object.} [globals] Global settings. * @property {Object.} [template] Template settings. diff --git a/packages/entity-renderer/examples/config/trifid.yaml b/packages/entity-renderer/examples/config/trifid.yaml index 03ce228e..70074ed1 100644 --- a/packages/entity-renderer/examples/config/trifid.yaml +++ b/packages/entity-renderer/examples/config/trifid.yaml @@ -2,6 +2,7 @@ server: logLevel: debug + logFormat: pretty globals: datasetBaseUrl: http://localhost:3000/