@opengis/fastify-table
Version:
core-plugins
57 lines (46 loc) • 1.65 kB
JavaScript
import pino from 'pino';
// import path from 'node:path';
import config from '../../../config.js';
import getRedis from '../redis/funcs/getRedis.js';
import redactionList from '../../../redactionList.js';
// utils
import getHooks from './getHooks.js';
import serializers from './serializers.js';
import timestampWithTimeZone from './timestampWithTimeZone.js';
const isServer = process.argv[2];
const rclient2 = getRedis({ db: 2 });
if (!config.log) config.log = {};
const level = config.log?.level || process.env.PINO_LOG_LEVEL || 'info';
console.log(`log level: ${level}`);
const options = {
level, // minimal log level to write
timestamp: () => `,"time":"${timestampWithTimeZone()}"`, // timestamp as isostring
hooks: getHooks(),
serializers, // custom log params
transport: {
targets: [{
target: './createFileStream.js', // path.resolve('utils/createFileStream.js')
},
{
level: 'error',
target: 'pino/file',
options: { destination: 1 },
},
],
},
redact: redactionList,
};
const logger = pino(options);
logger.file = function userFile(logfolder, msg, req) {
logger.info({ logfolder, ...(typeof msg === 'string' ? { msg } : msg) }, req);
};
if (config.debug) {
logger.file('test/redaction', { clientId: 'should be redacted', clientSecret: 'should be redacted' });
}
logger.metrics = function metrics(key, val, dbName) {
const dbname = dbName || config.pg?.database;
if (!dbname && !isServer) return;
if (!config.redis) return;
rclient2.hincrby(`${dbname}:system_metrics`, key, val || 1);
};
export default logger;