aboutsummaryrefslogtreecommitdiff
path: root/src/util/config.ts
diff options
context:
space:
mode:
authorKevin J Hoerr <kjhoerr@protonmail.com>2019-12-08 01:02:14 -0500
committerKevin J Hoerr <kjhoerr@protonmail.com>2019-12-08 01:02:14 -0500
commite499e3dc34d1e91cdad9276a7a168041479e6e64 (patch)
tree9d677cebfe39e8c43d53efe63d118c0c7d7277ef /src/util/config.ts
parentb614360c8a316e0933122ac1e3a631c0d0773a80 (diff)
downloadao-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.ts38
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);
+ });
+};