From 55d84d0f9bef4f5bac44423de7b7e991c00d56fb Mon Sep 17 00:00:00 2001 From: Andrew Darqui <andrew.darqui@gmail.com> Date: Wed, 2 Oct 2013 00:25:46 -0400 Subject: [PATCH] basic logger functionality added - accessible via http://nodebb/admin/logger --- public/src/templates.js | 2 +- public/templates/admin/header.tpl | 3 ++- public/templates/admin/logger.tpl | 33 +++++++++++++++++++++++++++++++ public/templates/config.json | 3 ++- src/routes/admin.js | 8 ++++++-- src/webserver.js | 11 +++++++++-- 6 files changed, 53 insertions(+), 7 deletions(-) create mode 100644 public/templates/admin/logger.tpl diff --git a/public/src/templates.js b/public/src/templates.js index 82c0438b05..a47ac42e73 100644 --- a/public/src/templates.js +++ b/public/src/templates.js @@ -306,4 +306,4 @@ module: { exports: {} } -} : module) \ No newline at end of file +} : module) diff --git a/public/templates/admin/header.tpl b/public/templates/admin/header.tpl index 72469a018a..8a5ca43dae 100644 --- a/public/templates/admin/header.tpl +++ b/public/templates/admin/header.tpl @@ -84,6 +84,7 @@ <li class=''><a href='{relative_path}/admin/plugins'><i class='icon-code-fork'></i> Plugins</a></li> <li class=''><a href='{relative_path}/admin/settings'><i class='icon-cogs'></i> Settings</a></li> <li class=''><a href='{relative_path}/admin/redis'><i class='icon-hdd'></i> Redis</a></li> + <li class=''><a href='{relative_path}/admin/logger'><i class='icon-th'></i> Logger</a></li> <li class=''><a href="{relative_path}/admin/motd"><i class="icon-comment"></i> MOTD</a></li> <li class="nav-header">Social Authentication</li> @@ -107,4 +108,4 @@ </ul> </div><!--/.well --> </div><!--/span--> - <div class="col-md-9" id="content"> \ No newline at end of file + <div class="col-md-9" id="content"> diff --git a/public/templates/admin/logger.tpl b/public/templates/admin/logger.tpl new file mode 100644 index 0000000000..c8abacff9b --- /dev/null +++ b/public/templates/admin/logger.tpl @@ -0,0 +1,33 @@ +<h1>Logger</h1> +<hr /> + +<h3>Logger Settings</h3> +<div class="alert alert-warning"> + + <p> + By enabling the check box, you will receive http logs to standard output. If you specify a path, logs will then be saved to a file instead. + </p> + <br/> + + <form> + + <label> + <input type="checkbox" data-field="loggerStatus"> <strong>Enable logging</strong> + </label> + <br/> + + <label>Path to log file</label> + <input class="form-control" type="text" placeholder="/path/to/log/file.log" data-field="loggerPath" /><br /> + </form> +</div> + +<button class="btn btn-lg btn-primary" id="save">Save</button> + +<script> + var loadDelay = setInterval(function() { + if (nodebb_admin) { + nodebb_admin.prepare(); + clearInterval(loadDelay); + } + }, 500); +</script> diff --git a/public/templates/config.json b/public/templates/config.json index f97cd5ce26..636ef7f0b3 100644 --- a/public/templates/config.json +++ b/public/templates/config.json @@ -11,6 +11,7 @@ "^admin/settings.*": "admin/settings", "admin/twitter.*": "admin/twitter", "admin/facebook.*": "admin/facebook", + "admin/logger.*": "admin/logger", "admin/gplus.*": "admin/gplus", "admin/motd/?$": "admin/motd", "admin/groups/?$": "admin/groups", @@ -41,4 +42,4 @@ "force_refresh": { "logout": true } -} \ No newline at end of file +} diff --git a/src/routes/admin.js b/src/routes/admin.js index b6db9cf925..a26a1be15c 100644 --- a/src/routes/admin.js +++ b/src/routes/admin.js @@ -30,7 +30,7 @@ var user = require('./../user.js'), (function () { var routes = [ 'categories/active', 'categories/disabled', 'users', 'topics', 'settings', 'themes', - 'twitter', 'facebook', 'gplus', 'redis', 'motd', 'groups', + 'twitter', 'facebook', 'gplus', 'redis', 'motd', 'groups','logger', 'users/latest', 'users/sort-posts', 'users/sort-reputation', 'users/search', 'plugins' ]; @@ -224,6 +224,10 @@ var user = require('./../user.js'), res.json(200, {}); }); + app.get('/logger', function(req, res) { + res.json(200, {}); + }); + app.get('/themes', function (req, res) { res.json(200, {}); }); @@ -257,4 +261,4 @@ var user = require('./../user.js'), }; -}(exports)); \ No newline at end of file +}(exports)); diff --git a/src/webserver.js b/src/webserver.js index 7212d3d235..3911c59c16 100644 --- a/src/webserver.js +++ b/src/webserver.js @@ -79,9 +79,16 @@ var express = require('express'), function(next) { // Pre-router middlewares app.use(express.compress()); - if(nconf.get("express:logger") == true) { - app.use(express.logger()); + + if(nconf.get("express:logger") == true || meta.config.loggerStatus > 0) { + var loggerObj = {}; + if(meta.config.loggerPath) { + loggerObj.stream = fs.createWriteStream(meta.config.loggerPath, {flags: 'a'}); + meta.config.loggerStream = loggerObj.stream + } + app.use(express.logger(loggerObj)); } + app.use(express.favicon(path.join(__dirname, '../', 'public', 'favicon.ico'))); app.use(require('less-middleware')({ src: path.join(__dirname, '../', 'public'),