From 366a8de8b50b8a99fbe4b015c192510ebcd8c7c1 Mon Sep 17 00:00:00 2001 From: Paul Sori Date: Wed, 3 Oct 2018 01:08:36 -0400 Subject: [PATCH] Logging --- .gitignore | 5 ++++- electron/index2.html | 3 --- logs/README.md | 3 +++ modules/auto-port-forwarding.js | 1 - modules/config/configure-commander.js | 8 +++++++ modules/db-management/database-master.js | 1 - modules/db-read/database-public-loki.js | 1 - modules/download.js | 1 - modules/file-explorer.js | 1 - modules/jukebox.js | 1 - modules/logger.js | 25 +++++++++++++++------ modules/login.js | 1 - modules/shared.js | 3 ++- mstream.js | 28 +++++++++++++++--------- 14 files changed, 53 insertions(+), 29 deletions(-) create mode 100644 logs/README.md diff --git a/.gitignore b/.gitignore index 8c2497e..443ea9e 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,7 @@ modules/ffmpeg/* !modules/ffmpeg/README.md .vscode/* -test.json \ No newline at end of file +test.json + +*.log +*.db \ No newline at end of file diff --git a/electron/index2.html b/electron/index2.html index 757dbf0..c349236 100644 --- a/electron/index2.html +++ b/electron/index2.html @@ -183,9 +183,6 @@ protocol = 'https'; } var localhostAdd = protocol + '://localhost:' + port; - // var newtworkAdd = protocol + '://' + require('internal-ip').v4() + ':' + port; - // console.log('Access mStream on the internet: '+protocol+'://' + ip + ':' + program.port); - // var iAdd = protocol + '://' + ip + ':' + port; var extraText = ''; if(newSubscriber ===true){ diff --git a/logs/README.md b/logs/README.md new file mode 100644 index 0000000..01ab940 --- /dev/null +++ b/logs/README.md @@ -0,0 +1,3 @@ +## Logs get stored here + +To enable logging, use the `-L` flag \ No newline at end of file diff --git a/modules/auto-port-forwarding.js b/modules/auto-port-forwarding.js index 27cbdff..a0634be 100644 --- a/modules/auto-port-forwarding.js +++ b/modules/auto-port-forwarding.js @@ -1,5 +1,4 @@ const natupnp = require('nat-upnp'); -require('./logger').init(); const winston = require('winston'); var tunnelInterval; diff --git a/modules/config/configure-commander.js b/modules/config/configure-commander.js index 9196664..4751def 100644 --- a/modules/config/configure-commander.js +++ b/modules/config/configure-commander.js @@ -40,6 +40,9 @@ exports.setup = function (args) { .option('-S, --skipimg', 'While skip parsing album art if flagged') .option('-P, --dbpause ', 'Specify File Scan Pause Interval', /^\d+$/i, 0) + // Logs + .option('-L, --logs ', 'Specify Database Filepath', './logs/mstream.db') + // JSON config .option('-j, --json ', 'Specify JSON Boot File') @@ -220,5 +223,10 @@ exports.setup = function (args) { program3.albumArtDir = program.images; } + // Logs + if (program.logs) { + program3.logs = { path: program.logs }; + } + return program3; } diff --git a/modules/db-management/database-master.js b/modules/db-management/database-master.js index ceb8b7e..3fc0290 100644 --- a/modules/db-management/database-master.js +++ b/modules/db-management/database-master.js @@ -1,7 +1,6 @@ const child = require('child_process'); const fe = require('path'); const mstreamReadPublicDB = require('../db-read/database-public-loki.js'); -require('../logger').init(); const winston = require('winston'); exports.setup = function (mstream, program) { diff --git a/modules/db-read/database-public-loki.js b/modules/db-read/database-public-loki.js index 6ceb58b..09faf01 100644 --- a/modules/db-read/database-public-loki.js +++ b/modules/db-read/database-public-loki.js @@ -1,6 +1,5 @@ const fe = require('path'); const loki = require('lokijs'); -require('../logger').init(); const winston = require('winston'); // Loki Collections diff --git a/modules/download.js b/modules/download.js index 75aaa2f..b5f73ab 100644 --- a/modules/download.js +++ b/modules/download.js @@ -1,6 +1,5 @@ const archiver = require('archiver'); const fe = require('path'); -require('./logger').init(); const winston = require('winston'); exports.setup = function (mstream, program) { diff --git a/modules/file-explorer.js b/modules/file-explorer.js index 412e04c..cd63db2 100644 --- a/modules/file-explorer.js +++ b/modules/file-explorer.js @@ -1,7 +1,6 @@ const Busboy = require("busboy"); const fs = require("fs"); const fe = require("path"); -require('./logger').init(); const winston = require('winston'); const masterFileTypesArray = ["mp3", "flac", "wav", "ogg", "aac", "m4a"]; diff --git a/modules/jukebox.js b/modules/jukebox.js index f6a763b..a4b8856 100644 --- a/modules/jukebox.js +++ b/modules/jukebox.js @@ -1,7 +1,6 @@ // Websocket Server const WebSocketServer = require('ws').Server; const url = require('url'); -require('./logger').init(); const winston = require('winston'); // list of currently connected clients (users) diff --git a/modules/logger.js b/modules/logger.js index 7be2bde..a57d935 100644 --- a/modules/logger.js +++ b/modules/logger.js @@ -7,15 +7,26 @@ const myFormat = winston.format.printf(info => { const init = () => { winston.configure({ transports: [ - new winston.transports.Console() + new winston.transports.Console({ + format: winston.format.combine( + winston.format.colorize(), + winston.format.timestamp(), + myFormat + ) + }) ], - format: winston.format.combine( - winston.format.colorize(), - winston.format.timestamp(), - myFormat - ), exitOnError: false }); }; -module.exports = { init }; +const addFileLogger = (filepath) => { + winston.add(new winston.transports.File({ + filename: filepath, + format: winston.format.combine( + winston.format.timestamp(), + winston.format.json() + ), + })); +} + +module.exports = { init, addFileLogger }; diff --git a/modules/login.js b/modules/login.js index 823b92a..3736b57 100644 --- a/modules/login.js +++ b/modules/login.js @@ -1,6 +1,5 @@ const jwt = require('jsonwebtoken'); const crypto = require('crypto'); -require('./logger').init(); const winston = require('winston'); exports.setup = function (mstream, program) { diff --git a/modules/shared.js b/modules/shared.js index e490c7b..2bf69e8 100644 --- a/modules/shared.js +++ b/modules/shared.js @@ -1,7 +1,8 @@ +const winston = require('winston'); const uuidV4 = require('uuid/v4'); const jwt = require('jsonwebtoken'); const loki = require('lokijs'); -const shareDB = new loki('sdhare.db'); +const shareDB = new loki('sdhare.db'); // TODO: Add this to config var shareCollection; shareDB.loadDatabase({}, err => { shareCollection = shareDB.getCollection('playlists'); diff --git a/mstream.js b/mstream.js index c072597..f45e007 100755 --- a/mstream.js +++ b/mstream.js @@ -1,4 +1,5 @@ -require('./modules/logger').init(); +const logger = require('./modules/logger'); +logger.init(); const winston = require('winston'); const express = require('express'); const mstream = express(); @@ -6,9 +7,7 @@ const fs = require('fs'); const fe = require('path'); const bodyParser = require('body-parser'); -exports.logit = function (msg) { - winston.info(msg); -} +exports.logit = function (msg) { /*Nothing. This is for electron*/ } exports.addresses = { localhost: false, @@ -16,7 +15,11 @@ exports.addresses = { internet: false } -exports.serveit = function (program, callback) { +exports.serveit = function (program) { + if (program.logs && program.logs.path) { + logger.addFileLogger(program.logs.path); + } + var server; if (program.ssl && program.ssl.cert && program.ssl.key) { @@ -186,11 +189,13 @@ exports.serveit = function (program, callback) { server.listen(program.port, function () { let protocol = program.ssl && program.ssl.cert && program.ssl.key ? 'https' : 'http'; exports.addresses.local = protocol + '://localhost:' + program.port; - exports.logit('Access mStream locally: ' + exports.addresses.local); + winston.info(`Access mStream locally: ${exports.addresses.local}`); + exports.logit(`Access mStream locally: ${exports.addresses.local}`); require('internal-ip').v4().then(ip => { exports.addresses.network = protocol + '://' + ip + ':' + program.port; - exports.logit('Access mStream on your local network: ' + exports.addresses.network); + winston.info(`Access mStream on your local network: ${exports.addresses.network}`); + exports.logit(`Access mStream on your local network: ${exports.addresses.network}`); }); // Handle Port Forwarding @@ -200,14 +205,17 @@ exports.serveit = function (program, callback) { if (status === true) { require('public-ip').v4().then(ip => { exports.addresses.internet = protocol + '://' + ip + ':' + program.port; - exports.logit('Access mStream on your local network:the internet: ' + exports.addresses.internet); + winston.info(`Access mStream on your local network:the internet: ${exports.addresses.internet}`); + exports.logit(`Access mStream on your local network:the internet: ${exports.addresses.internet}`); }); } else { - exports.logit('Port Forwarding Failed. The server is runnig but you will have to configure your own port forwarding'); + winston.error('Port Forwarding Failed. The server is running but you will have to configure your own port forwarding'); + exports.logit('Port Forwarding Failed. The server is running but you will have to configure your own port forwarding'); } }); } catch (err) { - exports.logit('Port Forwarding Failed. The server is runnig but you will have to configure your own port forwarding'); + exports.logit('Port Forwarding Failed. The server is running but you will have to configure your own port forwarding'); + winston.error('Port Forwarding Failed. The server is running but you will have to configure your own port forwarding'); } } });