diff options
author | Rupeshiya <rupeshiya@gmail.com> | 2021-07-03 17:57:13 +0300 |
---|---|---|
committer | Rupeshiya <rupeshiya@gmail.com> | 2021-07-03 17:58:13 +0300 |
commit | 148a25ae6fabf449dab9343ed1f548c50732cbfa (patch) | |
tree | ed2e0ae5f6c2de56d7f2206449f276bfdd90fe35 /server | |
parent | d4526f5f0c64d4dddf1ebdd25fd67d04d060a9b0 (diff) |
added logging mechanism
Diffstat (limited to 'server')
-rw-r--r-- | server/config/winston.ts | 65 | ||||
-rw-r--r-- | server/server.ts | 3 |
2 files changed, 67 insertions, 1 deletions
diff --git a/server/config/winston.ts b/server/config/winston.ts new file mode 100644 index 0000000..261f542 --- /dev/null +++ b/server/config/winston.ts @@ -0,0 +1,65 @@ +import appRoot from "app-root-path"; +import winston from "winston"; + +const { combine, colorize, printf, timestamp } = winston.format; + +const logFormat = printf(info => { + return `[${info.timestamp}] ${info.level}: ${info.message}`; +}); + +const rawFormat = printf(info => { + return `[${info.timestamp}] ${info.level}: ${info.message}`; +}); + +// define the custom settings for each transport (file, console) +const options = { + file: { + level: "info", + filename: `${appRoot}/logs/app.log`, + handleExceptions: true, + json: true, + maxsize: 5242880, // 5MB + maxFiles: 5, + colorize: false + }, + errorFile: { + level: "error", + name: "file.error", + filename: `${appRoot}/logs/error.log`, + handleExceptions: true, + json: true, + maxsize: 5242880, // 5MB + maxFiles: 100, + colorize: true + }, + console: { + level: "debug", + handleExceptions: true, + json: false, + format: combine(colorize(), rawFormat) + } +}; + +// instantiate a new Winston Logger with the settings defined above +export const logger = winston.createLogger({ + format: combine(timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), logFormat), + transports: [ + new winston.transports.File(options.file), + new winston.transports.Console(options.console) + ], + exitOnError: false // do not exit on handled exceptions +}); + +// create a stream object with a 'write' function that will be used by `morgan` +export const stream = { + write: message => { + logger.info(message); + } +}; + +winston.addColors({ + debug: "white", + error: "red", + info: "green", + warn: "yellow" +}); diff --git a/server/server.ts b/server/server.ts index dbd9f48..da46179 100644 --- a/server/server.ts +++ b/server/server.ts @@ -14,6 +14,7 @@ import * as links from "./handlers/links"; import * as auth from "./handlers/auth"; import __v1Routes from "./__v1"; import routes from "./routes"; +import { stream } from "./config/winston"; import "./cron"; import "./passport"; @@ -28,7 +29,7 @@ app.prepare().then(async () => { server.set("trust proxy", true); if (env.isDev) { - server.use(morgan("dev")); + server.use(morgan("combined", { stream })); } else if (env.SENTRY_PRIVATE_DSN) { Sentry.init({ dsn: env.SENTRY_PRIVATE_DSN, |