mirror of
https://github.com/dotFionn/iassure-wx.git
synced 2026-03-21 06:22:56 -05:00
replace console.log with winston logger
This commit is contained in:
@@ -3,6 +3,7 @@ import morgan from 'morgan';
|
||||
import nodesched from 'node-schedule';
|
||||
|
||||
import appConfig from './config';
|
||||
import logger from './logger';
|
||||
import router from './router';
|
||||
import wxService from './services/wx.service';
|
||||
|
||||
@@ -27,7 +28,7 @@ if (!config.disableDefaultApiEndpoint) {
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
app.use((err, req: Request, res: Response, next: NextFunction) => {
|
||||
console.log('err', err);
|
||||
logger.error('%o', err);
|
||||
|
||||
// 500
|
||||
res.status(500).json({ msg: 'an error occurred' });
|
||||
@@ -37,20 +38,18 @@ nodesched.scheduleJob('regenerate data', '*/30 * * * *', wxService.wrappedGenera
|
||||
wxService.wrappedGenerateData();
|
||||
|
||||
const server = app.listen(config.port, () => {
|
||||
console.log(
|
||||
`application is listening on port ${config.port}`,
|
||||
);
|
||||
logger.info('application is listening on port %s', config.port);
|
||||
});
|
||||
|
||||
function processShutdown(signal: string) {
|
||||
console.log(`${signal} signal received. Shutting down.`);
|
||||
logger.warn('%s signal received. Shutting down.', signal);
|
||||
server.close((err) => {
|
||||
if (err) {
|
||||
console.error(`Failed to shut down server gracefully: ${err}`);
|
||||
logger.error('Failed to shut down server gracefully: %o', err);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log('Server closed');
|
||||
logger.info('Server closed');
|
||||
process.exit(0);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
export interface Config {
|
||||
port: number;
|
||||
apiBasePath: string;
|
||||
disableDefaultApiEndpoint: boolean;
|
||||
trustProxy: string | boolean;
|
||||
}
|
||||
|
||||
export default function appConfig(): Config {
|
||||
export default function appConfig() {
|
||||
const {
|
||||
PORT,
|
||||
BASE_PATH,
|
||||
@@ -21,8 +14,15 @@ export default function appConfig(): Config {
|
||||
|
||||
return {
|
||||
port: Number(PORT ?? 3000),
|
||||
|
||||
apiBasePath: BASE_PATH ?? '',
|
||||
trustProxy,
|
||||
|
||||
disableDefaultApiEndpoint: DISABLE_DEFAULT_API_ENDPOINT == 'true',
|
||||
|
||||
logging: {
|
||||
levelConsole: process.env.LOG_LEVEL_CONSOLE || 'http',
|
||||
levelFile: process.env.LOG_LEVEL_FILE || 'info',
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import wxService from '../services/wx.service';
|
||||
export async function getRegionWx(req: express.Request, res: express.Response, next: express.NextFunction) {
|
||||
try {
|
||||
const { region } = req.params;
|
||||
|
||||
res.json(wxService.getWx(region));
|
||||
} catch (e) {
|
||||
next(e);
|
||||
|
||||
42
src/backend/logger.ts
Normal file
42
src/backend/logger.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import winston from 'winston';
|
||||
|
||||
import getConfig from './config';
|
||||
|
||||
const { logging } = getConfig();
|
||||
|
||||
const transports = [
|
||||
new winston.transports.File({
|
||||
filename: 'app.log',
|
||||
level: logging.levelFile,
|
||||
}),
|
||||
new winston.transports.Console({
|
||||
level: logging.levelConsole,
|
||||
format: winston.format.colorize({ all: true }),
|
||||
}),
|
||||
];
|
||||
|
||||
const logger = winston.createLogger({
|
||||
exitOnError: false,
|
||||
format: winston.format.combine(
|
||||
winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
|
||||
winston.format.splat(),
|
||||
winston.format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`),
|
||||
),
|
||||
transports,
|
||||
});
|
||||
|
||||
winston.addColors({
|
||||
error: 'brightRed',
|
||||
warn: 'yellow',
|
||||
info: 'green',
|
||||
http: 'magenta',
|
||||
verbose: 'brightBlue',
|
||||
debug: 'brightCyan',
|
||||
silly: 'gray',
|
||||
});
|
||||
|
||||
process.on('warning', e => logger.warn('%o', e));
|
||||
process.on('uncaughtException', e => logger.error('%o', e));
|
||||
process.on('unhandledRejection', e => logger.error('%o', e));
|
||||
|
||||
export default logger;
|
||||
@@ -2,7 +2,6 @@ import fs from 'fs';
|
||||
|
||||
import { WxConfig } from '@/shared/types/config.types';
|
||||
|
||||
|
||||
export function getConfig(): WxConfig {
|
||||
const data = JSON.parse(fs.readFileSync('/opt/wx-config.json').toString());
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import axios from 'axios';
|
||||
|
||||
import logger from '../logger';
|
||||
|
||||
import regionsService from './regions.service';
|
||||
|
||||
import { WxFix } from '@/shared/types/config.types';
|
||||
@@ -98,7 +100,7 @@ export async function generateData() {
|
||||
}
|
||||
|
||||
export function wrappedGenerateData() {
|
||||
generateData().catch((...params) => console.error(...params));
|
||||
generateData().catch((...params) => logger.error('%o', params));
|
||||
}
|
||||
|
||||
export function getWx(region: string): WxData | null {
|
||||
|
||||
Reference in New Issue
Block a user