Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/thedevs-network/kutt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorRupeshiya <rupeshiya@gmail.com>2021-07-03 17:57:13 +0300
committerRupeshiya <rupeshiya@gmail.com>2021-07-03 17:58:13 +0300
commit148a25ae6fabf449dab9343ed1f548c50732cbfa (patch)
treeed2e0ae5f6c2de56d7f2206449f276bfdd90fe35 /server
parentd4526f5f0c64d4dddf1ebdd25fd67d04d060a9b0 (diff)
added logging mechanism
Diffstat (limited to 'server')
-rw-r--r--server/config/winston.ts65
-rw-r--r--server/server.ts3
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,