diff options
| author | Kevin J Hoerr <kjhoerr@protonmail.com> | 2019-12-08 01:02:14 -0500 |
|---|---|---|
| committer | Kevin J Hoerr <kjhoerr@protonmail.com> | 2019-12-08 01:02:14 -0500 |
| commit | e499e3dc34d1e91cdad9276a7a168041479e6e64 (patch) | |
| tree | 9d677cebfe39e8c43d53efe63d118c0c7d7277ef /src/util/config.ts | |
| parent | b614360c8a316e0933122ac1e3a631c0d0773a80 (diff) | |
| download | ao-coverage-e499e3dc34d1e91cdad9276a7a168041479e6e64.tar.gz ao-coverage-e499e3dc34d1e91cdad9276a7a168041479e6e64.tar.bz2 ao-coverage-e499e3dc34d1e91cdad9276a7a168041479e6e64.zip | |
Add winston, express-winston to handle logging
Diffstat (limited to 'src/util/config.ts')
| -rw-r--r-- | src/util/config.ts | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/util/config.ts b/src/util/config.ts new file mode 100644 index 0000000..c155e64 --- /dev/null +++ b/src/util/config.ts @@ -0,0 +1,38 @@ +import winston from "winston"; +import { MongoClient } from "mongodb"; +import { Server } from "http"; + +import logger_config from "./logger"; + +const logger = winston.createLogger(logger_config("ROOT")); + +export const config_or_error = (var_name: string) => { + if (!process.env[var_name]) { + logger.error("%s must be defined", var_name); + process.exit(1); + return ""; + } else { + return process.env[var_name] || ""; + } +}; + +export const handle_shutdown = (mongo: MongoClient, server: Server) => ( + signal: NodeJS.Signals +) => { + logger.warn("%s signal received. Closing shop.", signal); + + mongo + .close() + .then(() => { + logger.info("MongoDB client connection closed."); + return new Promise((res, rej) => + server.close(err => { + logger.info("Express down."); + (err ? rej : res)(err); + }) + ); + }) + .finally(() => { + process.exit(0); + }); +}; |
