diff --git a/lib/custom-api/session.js b/lib/custom-api/session.js
index 6859194e..59492f7a 100644
--- a/lib/custom-api/session.js
+++ b/lib/custom-api/session.js
@@ -12,7 +12,7 @@ const passwordHelper = require('./password-helper')
 
 const fs = require('fs')
 const jwt = require('jsonwebtoken')
-const logger = require('winston')
+const logger = require('../logger')
 
 function isSessionCreationEnabled () {
   return config.getConf('authentication:type') === 'jwt'
diff --git a/lib/custom-api/user.js b/lib/custom-api/user.js
index 7f1199a3..47f1adf9 100644
--- a/lib/custom-api/user.js
+++ b/lib/custom-api/user.js
@@ -7,7 +7,7 @@
  */
 
 'use strict'
-const logger = require('winston')
+const logger = require('../logger')
 const passwordHelper = require('./password-helper')
 
 const FhirCommon = require('../fhir/common')
diff --git a/lib/fhir/core.js b/lib/fhir/core.js
index de6e378e..da4edca4 100644
--- a/lib/fhir/core.js
+++ b/lib/fhir/core.js
@@ -7,7 +7,7 @@
  */
 'use strict'
 
-const logger = require('winston')
+const logger = require('../logger')
 
 const FhirCommon = require('./common')
 const Authorization = require('../security/authorization')
diff --git a/lib/fhir/module-loader.js b/lib/fhir/module-loader.js
index 3b2018d9..e9ae479c 100644
--- a/lib/fhir/module-loader.js
+++ b/lib/fhir/module-loader.js
@@ -10,7 +10,7 @@
 
 const fs = require('fs')
 const path = require('path')
-const logger = require('winston')
+const logger = require('../logger')
 
 const fhirResources = {}
 
diff --git a/lib/fhir/resources/binary.js b/lib/fhir/resources/binary.js
index db22a3c4..01c6e87a 100644
--- a/lib/fhir/resources/binary.js
+++ b/lib/fhir/resources/binary.js
@@ -9,7 +9,7 @@
 'use strict'
 
 const mongodb = require('mongodb')
-const logger = require('winston')
+const logger = require('../../logger')
 
 const FhirCommon = require('../common')
 const FhirRoot = require('../root')
diff --git a/lib/fhir/resources/patient.js b/lib/fhir/resources/patient.js
index 1a45c15e..c495e827 100644
--- a/lib/fhir/resources/patient.js
+++ b/lib/fhir/resources/patient.js
@@ -7,7 +7,7 @@
  */
 
 'use strict'
-const logger = require('winston')
+const logger = require('../../logger')
 
 const config = require('../../config')
 const FhirCommon = require('../common')
diff --git a/lib/fhir/resources/practitioner.js b/lib/fhir/resources/practitioner.js
index a0925784..604c808c 100644
--- a/lib/fhir/resources/practitioner.js
+++ b/lib/fhir/resources/practitioner.js
@@ -8,7 +8,7 @@
 
 'use strict'
 
-const logger = require('winston')
+const logger = require('../../logger')
 
 const FhirCommon = require('../common')
 const QueryUtils = require('../query-utils')
diff --git a/lib/fhir/root.js b/lib/fhir/root.js
index a85985fb..3d59f26d 100644
--- a/lib/fhir/root.js
+++ b/lib/fhir/root.js
@@ -10,7 +10,7 @@
 
 const async = require('async')
 const url = require('url')
-const logger = require('winston')
+const logger = require('../logger')
 
 const FhirCommon = require('./common')
 const FhirCore = require('./core')
diff --git a/lib/fhir/services/matching-worker/matching-worker.js b/lib/fhir/services/matching-worker/matching-worker.js
index 627548f2..42a58830 100644
--- a/lib/fhir/services/matching-worker/matching-worker.js
+++ b/lib/fhir/services/matching-worker/matching-worker.js
@@ -8,7 +8,7 @@
 'use strict'
 
 const cp = require('child_process')
-const logger = require('winston')
+const logger = require('../../../logger')
 
 module.exports = (mongo) => {
   const startMatchingWorker = (context) => {
diff --git a/lib/fhir/services/terminology-service.js b/lib/fhir/services/terminology-service.js
index 38779b45..6d687630 100644
--- a/lib/fhir/services/terminology-service.js
+++ b/lib/fhir/services/terminology-service.js
@@ -7,7 +7,7 @@
  */
 
 'use strict'
-const logger = require('winston')
+const logger = require('../../logger')
 const FhirCommon = require('../common')
 
 module.exports = (mongo) => {
diff --git a/lib/init.js b/lib/init.js
index 0acb9bd2..ad76658f 100644
--- a/lib/init.js
+++ b/lib/init.js
@@ -10,14 +10,3 @@
 
 const path = require('path')
 global.appRoot = path.join(path.resolve(__dirname), '..')
-
-// Load configuration
-const config = require('./config')
-
-const logger = require('winston')
-logger.remove(logger.transports.Console)
-logger.add(logger.transports.Console, {
-  colorize: true,
-  timestamp: true,
-  level: config.getConf('logger:level')
-})
diff --git a/lib/logger.js b/lib/logger.js
new file mode 100644
index 00000000..4eb44315
--- /dev/null
+++ b/lib/logger.js
@@ -0,0 +1,21 @@
+const config = require('./config')
+const winston = require('winston')
+
+const logger = winston.createLogger({
+  level: config.getConf('logger:level'),
+  format:
+    // Maintain the format from Winston 2.x.
+    winston.format.combine(
+      winston.format.colorize(),
+      winston.format.errors({ stack: true }),
+      winston.format.timestamp(),
+      winston.format.printf((info) => {
+        return `${info.timestamp} - ${info.level}: ${
+          info.stack == null ? info.message : info.stack
+        }`
+      })
+    ),
+  transports: [new winston.transports.Console()]
+})
+
+module.exports = exports = logger
diff --git a/lib/matching-queue/matching-queue.js b/lib/matching-queue/matching-queue.js
index a920a393..f405348e 100644
--- a/lib/matching-queue/matching-queue.js
+++ b/lib/matching-queue/matching-queue.js
@@ -9,7 +9,7 @@
 'use strict'
 
 const cp = require('child_process')
-const logger = require('winston')
+const logger = require('../logger')
 
 module.exports = (mongo) => {
   const startWorker = (workers, workerName) => {
diff --git a/lib/mongo.js b/lib/mongo.js
index fb37663d..f06f40e0 100644
--- a/lib/mongo.js
+++ b/lib/mongo.js
@@ -9,7 +9,7 @@
 'use strict'
 const MongoClient = require('mongodb').MongoClient
 const config = require('./config')
-const logger = require('winston')
+const logger = require('./logger')
 
 const collapseWhenSingleClause = (query) => {
   const collapseOperatorsList = ['$and', '$or']
diff --git a/lib/plugins/audit.js b/lib/plugins/audit.js
index 8a33efa7..305c97f8 100644
--- a/lib/plugins/audit.js
+++ b/lib/plugins/audit.js
@@ -8,7 +8,6 @@
 
 'use strict'
 
-const logger = require('winston')
 const moment = require('moment')
 
 const EVENT_OUTCOME = {
@@ -29,7 +28,7 @@ const excludedResourceTypeInteractions = [
   }
 ]
 
-module.exports = (mongo, fhirResources) => {
+module.exports = (mongo, fhirResources, logger) => {
   const fhirCore = require('../fhir/core.js')(mongo, fhirResources)
 
   const getSuccessOrFailed = (data) => {
diff --git a/lib/plugins/default.js b/lib/plugins/default.js
index 8086fcc0..1184f5f7 100644
--- a/lib/plugins/default.js
+++ b/lib/plugins/default.js
@@ -8,9 +8,7 @@
 
 'use strict'
 
-const logger = require('winston')
-
-module.exports = () => {
+module.exports = (_mongo, _fhirResources, logger) => {
   return {
     userTypeRestrictions: {
       'sysadmin': {
diff --git a/lib/plugins/matching-queue.js b/lib/plugins/matching-queue.js
index 737b16da..63d42702 100644
--- a/lib/plugins/matching-queue.js
+++ b/lib/plugins/matching-queue.js
@@ -9,12 +9,11 @@
 'use strict'
 
 const mongoDbQueue = require('mongodb-queue')
-const logger = require('winston')
 
 const matchingConfig = require('../../config/matching')
 const constants = require('../constants')
 
-module.exports = (mongo) => {
+module.exports = (mongo, _fhirResources, logger) => {
   return {
     hooks: {
       after: [
diff --git a/lib/resource-linking.js b/lib/resource-linking.js
index b6da434e..9329dfc3 100644
--- a/lib/resource-linking.js
+++ b/lib/resource-linking.js
@@ -7,7 +7,7 @@
  */
 'use strict'
 
-const logger = require('winston')
+const logger = require('./logger')
 
 const FhirCommon = require('./fhir/common')
 const constants = require('./constants')
diff --git a/lib/security/authorization.js b/lib/security/authorization.js
index 32e72742..233d7ab6 100644
--- a/lib/security/authorization.js
+++ b/lib/security/authorization.js
@@ -7,7 +7,7 @@
  */
 
 'use strict'
-const logger = require('winston')
+const logger = require('../logger')
 const FhirCommon = require('../fhir/common')
 
 const userTypeRestrictions = {}
diff --git a/lib/security/jwt-authentication/index.js b/lib/security/jwt-authentication/index.js
index c945dd14..82fc8e69 100644
--- a/lib/security/jwt-authentication/index.js
+++ b/lib/security/jwt-authentication/index.js
@@ -11,7 +11,7 @@ const config = require('../../config')
 
 const fs = require('fs')
 const jwt = require('jsonwebtoken')
-const logger = require('winston')
+const logger = require('../../logger')
 
 const TOKEN_PATTERN = /^ *(?:[Bb][Ee][Aa][Rr][Ee][Rr]) +([A-Za-z0-9\-._~+/]+=*) *$/
 
diff --git a/lib/security/openhim-style-authentication.js b/lib/security/openhim-style-authentication.js
index 9557c66e..97c73171 100644
--- a/lib/security/openhim-style-authentication.js
+++ b/lib/security/openhim-style-authentication.js
@@ -7,7 +7,7 @@
  */
 
 'use strict'
-const logger = require('winston')
+const logger = require('../logger')
 const config = require('../config')
 const crypto = require('crypto')
 const FhirCommon = require('../fhir/common')
diff --git a/lib/server.js b/lib/server.js
index 96a86c43..cc2271f5 100644
--- a/lib/server.js
+++ b/lib/server.js
@@ -9,7 +9,7 @@
 'use strict'
 require('./init')
 
-const logger = require('winston')
+const logger = require('./logger')
 const express = require('express')
 const bodyParser = require('body-parser')
 const xmlParser = require('express-xml-bodyparser')
@@ -73,7 +73,7 @@ if (validationConf.enabled) {
 
 // Load plugins
 fs.readdirSync(path.resolve(`${global.appRoot}/lib/plugins`)).forEach((file) => {
-  const plugin = require(`./plugins/${file}`)(mongo, fhirResources)
+  const plugin = require(`./plugins/${file}`)(mongo, fhirResources, logger)
   if (plugin.userTypeRestrictions) {
     authorization.addUserTypeRestrictions(plugin.userTypeRestrictions)
   }
diff --git a/package.json b/package.json
index f76e607f..0a817608 100644
--- a/package.json
+++ b/package.json
@@ -39,7 +39,7 @@
     "talisman": "^0.21.0",
     "urijs": "^1.19.2",
     "uuid": "^3.3.3",
-    "winston": "^2.4.2"
+    "winston": "^3.3.3"
   },
   "devDependencies": {
     "chalk": "^2.4.1",
diff --git a/yarn.lock b/yarn.lock
index ae5bd140..d6f53b6b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,15 @@
 # yarn lockfile v1
 
 
+"@dabh/diagnostics@^2.0.2":
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.2.tgz#290d08f7b381b8f94607dc8f471a12c675f9db31"
+  integrity sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==
+  dependencies:
+    colorspace "1.1.x"
+    enabled "2.0.x"
+    kuler "^2.0.0"
+
 "@sinonjs/commons@^1", "@sinonjs/commons@^1.0.2", "@sinonjs/commons@^1.4.0":
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.4.0.tgz#7b3ec2d96af481d7a0321252e7b1c94724ec5a78"
@@ -257,10 +266,10 @@ async@^2.6.1:
   dependencies:
     lodash "^4.17.14"
 
-async@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/async/-/async-1.0.0.tgz#f8fc04ca3a13784ade9e1641af98578cfbd647a9"
-  integrity sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=
+async@^3.1.0:
+  version "3.2.1"
+  resolved "https://registry.yarnpkg.com/async/-/async-3.2.1.tgz#d3274ec66d107a47476a4c49136aacdb00665fc8"
+  integrity sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==
 
 asynckit@^0.4.0:
   version "0.4.0"
@@ -655,7 +664,7 @@ collection-visit@^1.0.0:
     map-visit "^1.0.0"
     object-visit "^1.0.0"
 
-color-convert@^1.9.0:
+color-convert@^1.9.0, color-convert@^1.9.1:
   version "1.9.3"
   resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
   integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
@@ -667,14 +676,43 @@ color-name@1.1.3:
   resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
   integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
 
+color-name@^1.0.0:
+  version "1.1.4"
+  resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+  integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+color-string@^1.5.2:
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.6.0.tgz#c3915f61fe267672cb7e1e064c9d692219f6c312"
+  integrity sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==
+  dependencies:
+    color-name "^1.0.0"
+    simple-swizzle "^0.2.2"
+
 color-support@^1.1.0:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
 
-colors@1.0.x:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
-  integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=
+color@3.0.x:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a"
+  integrity sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==
+  dependencies:
+    color-convert "^1.9.1"
+    color-string "^1.5.2"
+
+colors@^1.2.1:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
+  integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
+
+colorspace@1.1.x:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.2.tgz#e0128950d082b86a2168580796a0aa5d6c68d8c5"
+  integrity sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==
+  dependencies:
+    color "3.0.x"
+    text-hex "1.0.x"
 
 combined-stream@^1.0.5:
   version "1.0.6"
@@ -824,11 +862,6 @@ cryptiles@2.x.x:
   dependencies:
     boom "2.x.x"
 
-cycle@1.0.x:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2"
-  integrity sha1-IegLK+hYD5i0aPN5QwZisEbDStI=
-
 d@1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
@@ -1013,6 +1046,11 @@ ee-first@1.1.1:
   resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
   integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
 
+enabled@2.0.x:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2"
+  integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==
+
 encodeurl@~1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
@@ -1376,11 +1414,6 @@ extsprintf@^1.2.0:
   resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
   integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
 
-eyes@0.1.x:
-  version "0.1.8"
-  resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0"
-  integrity sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=
-
 faker@^4.1.0:
   version "4.1.0"
   resolved "https://registry.yarnpkg.com/faker/-/faker-4.1.0.tgz#1e45bbbecc6774b3c195fad2835109c6d748cc3f"
@@ -1399,6 +1432,16 @@ fast-levenshtein@~2.0.4:
   version "2.0.6"
   resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
 
+fast-safe-stringify@^2.0.4:
+  version "2.0.8"
+  resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz#dc2af48c46cf712b683e849b2bbd446b32de936f"
+  integrity sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag==
+
+fecha@^4.2.0:
+  version "4.2.1"
+  resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.1.tgz#0a83ad8f86ef62a091e22bb5a039cd03d23eecce"
+  integrity sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==
+
 fhir@^3.3.1:
   version "3.3.1"
   resolved "https://registry.yarnpkg.com/fhir/-/fhir-3.3.1.tgz#dbc0f2edc8096225af6e659041a686a4419c13ad"
@@ -1499,6 +1542,11 @@ flat-cache@^1.2.1:
     graceful-fs "^4.1.2"
     write "^0.2.1"
 
+fn.name@1.x.x:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc"
+  integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==
+
 for-in@^1.0.1, for-in@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@@ -1956,6 +2004,11 @@ is-arrayish@^0.2.1:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
 
+is-arrayish@^0.3.1:
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
+  integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
+
 is-buffer@^1.1.5:
   version "1.1.6"
   resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
@@ -2131,6 +2184,11 @@ is-stream@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
 
+is-stream@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
+  integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
+
 is-typedarray@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
@@ -2172,7 +2230,7 @@ isobject@^3.0.0, isobject@^3.0.1:
   resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
   integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
 
-isstream@0.1.x, isstream@~0.1.2:
+isstream@~0.1.2:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
   integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
@@ -2376,6 +2434,11 @@ kind-of@^6.0.0, kind-of@^6.0.2:
   resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
   integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
 
+kuler@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3"
+  integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==
+
 lcid@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
@@ -2497,6 +2560,17 @@ log-driver@1.2.5:
   resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056"
   integrity sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY=
 
+logform@^2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/logform/-/logform-2.2.0.tgz#40f036d19161fc76b68ab50fdc7fe495544492f2"
+  integrity sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==
+  dependencies:
+    colors "^1.2.1"
+    fast-safe-stringify "^2.0.4"
+    fecha "^4.2.0"
+    ms "^2.1.1"
+    triple-beam "^1.3.0"
+
 lolex@^4.1.0, lolex@^4.2.0:
   version "4.2.0"
   resolved "https://registry.yarnpkg.com/lolex/-/lolex-4.2.0.tgz#ddbd7f6213ca1ea5826901ab1222b65d714b3cd7"
@@ -3009,6 +3083,13 @@ once@^1.3.0:
   dependencies:
     wrappy "1"
 
+one-time@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45"
+  integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==
+  dependencies:
+    fn.name "1.x.x"
+
 onetime@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
@@ -3405,6 +3486,19 @@ readable-stream@^2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-str
     string_decoder "~1.1.1"
     util-deprecate "~1.0.1"
 
+readable-stream@^2.3.7:
+  version "2.3.7"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+  integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
+  dependencies:
+    core-util-is "~1.0.0"
+    inherits "~2.0.3"
+    isarray "~1.0.0"
+    process-nextick-args "~2.0.0"
+    safe-buffer "~5.1.1"
+    string_decoder "~1.1.1"
+    util-deprecate "~1.0.1"
+
 readable-stream@^3.0.2:
   version "3.4.0"
   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc"
@@ -3414,6 +3508,15 @@ readable-stream@^3.0.2:
     string_decoder "^1.1.1"
     util-deprecate "^1.0.1"
 
+readable-stream@^3.4.0:
+  version "3.6.0"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+  integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+  dependencies:
+    inherits "^2.0.3"
+    string_decoder "^1.1.1"
+    util-deprecate "^1.0.1"
+
 readdir-scoped-modules@^1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747"
@@ -3724,6 +3827,13 @@ signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
 
+simple-swizzle@^0.2.2:
+  version "0.2.2"
+  resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
+  integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
+  dependencies:
+    is-arrayish "^0.3.1"
+
 sinon@^7.5.0:
   version "7.5.0"
   resolved "https://registry.yarnpkg.com/sinon/-/sinon-7.5.0.tgz#e9488ea466070ea908fd44a3d6478fd4923c67ec"
@@ -4180,6 +4290,11 @@ test-exclude@^4.2.0:
     read-pkg-up "^1.0.1"
     require-main-filename "^1.0.1"
 
+text-hex@1.0.x:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5"
+  integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==
+
 text-table@^0.2.0, text-table@~0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@@ -4252,6 +4367,11 @@ trim-right@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
 
+triple-beam@^1.2.0, triple-beam@^1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9"
+  integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==
+
 trivial-deferred@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/trivial-deferred/-/trivial-deferred-1.0.1.tgz#376d4d29d951d6368a6f7a0ae85c2f4d5e0658f3"
@@ -4458,17 +4578,28 @@ window-size@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876"
 
-winston@^2.4.2:
-  version "2.4.4"
-  resolved "https://registry.yarnpkg.com/winston/-/winston-2.4.4.tgz#a01e4d1d0a103cf4eada6fc1f886b3110d71c34b"
-  integrity sha512-NBo2Pepn4hK4V01UfcWcDlmiVTs7VTB1h7bgnB0rgP146bYhMxX0ypCz3lBOfNxCO4Zuek7yeT+y/zM1OfMw4Q==
+winston-transport@^4.4.0:
+  version "4.4.0"
+  resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.4.0.tgz#17af518daa690d5b2ecccaa7acf7b20ca7925e59"
+  integrity sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==
   dependencies:
-    async "~1.0.0"
-    colors "1.0.x"
-    cycle "1.0.x"
-    eyes "0.1.x"
-    isstream "0.1.x"
+    readable-stream "^2.3.7"
+    triple-beam "^1.2.0"
+
+winston@^3.3.3:
+  version "3.3.3"
+  resolved "https://registry.yarnpkg.com/winston/-/winston-3.3.3.tgz#ae6172042cafb29786afa3d09c8ff833ab7c9170"
+  integrity sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==
+  dependencies:
+    "@dabh/diagnostics" "^2.0.2"
+    async "^3.1.0"
+    is-stream "^2.0.0"
+    logform "^2.2.0"
+    one-time "^1.0.0"
+    readable-stream "^3.4.0"
     stack-trace "0.0.x"
+    triple-beam "^1.3.0"
+    winston-transport "^4.4.0"
 
 wordwrap@~0.0.2:
   version "0.0.3"