Split out web logging to it's own logger/files/configuration

This commit is contained in:
Bryan Ashby 2023-02-01 23:02:33 -07:00
parent d286fa2cf4
commit 8a4f90263a
No known key found for this signature in database
GPG Key ID: C2C1B501E4EFD994
5 changed files with 56 additions and 8 deletions

View File

@ -302,6 +302,17 @@ module.exports = () => {
staticRoot: paths.join(__dirname, './../www'),
// Logging block works the same way the system logger does
logging: {
rotatingFile: {
level: 'info',
type: 'rotating-file',
fileName: 'enigma-bbs.web.log',
period: '1d',
count: 3,
},
},
handlers: {
systemGeneral: {
enabled: true,

View File

@ -27,6 +27,16 @@ module.exports = class Log {
logStreams.push(Config.logging.rotatingFile);
}
const serializers = Log.standardSerializers();
this.log = bunyan.createLogger({
name: 'ENiGMA½ BBS',
streams: logStreams,
serializers: serializers,
});
}
static standardSerializers() {
const serializers = {
err: bunyan.stdSerializers.err, // handle 'err' fields with stack/etc.
};
@ -36,11 +46,7 @@ module.exports = class Log {
serializers[keyName] = fd => Log.hideSensitive(fd);
});
this.log = bunyan.createLogger({
name: 'ENiGMA½ BBS',
streams: logStreams,
serializers: serializers,
});
return serializers;
}
static checkLogPath(logPath) {

View File

@ -15,6 +15,7 @@ const paths = require('path');
const mimeTypes = require('mime-types');
const forEachSeries = require('async/forEachSeries');
const findSeries = require('async/findSeries');
const WebLog = require('../../web_log.js');
const ModuleInfo = (exports.moduleInfo = {
name: 'Web',
@ -74,7 +75,8 @@ exports.getModule = class WebServerModule extends ServerModule {
constructor() {
super();
this.log = Log.child({ server: 'Web' });
//this.log = Log.child({ server: 'Web' });
this.log = WebLog.createWebLog();
const config = Config();
this.enableHttp = config.contentServers.web.http.enabled || false;
@ -276,7 +278,7 @@ exports.getModule = class WebServerModule extends ServerModule {
}
routeRequest(req, resp) {
this.log.trace({ url: req.url, method: req.method }, 'Request');
this.log.trace({ req }, 'Request');
let route = _.find(this.routes, r => r.matchesRequest(req));

View File

@ -45,7 +45,7 @@ exports.getModule = class NodeInfo2WebHadnler extends WebHandlerModule {
}
_nodeInfo2Handler(req, resp) {
this.log.info({ url: req.url }, 'Serving NodeInfo2 request');
this.log.info('Serving NodeInfo2 request');
this._getNodeInfo(nodeInfo => {
const body = JSON.stringify(nodeInfo);

29
core/web_log.js Normal file
View File

@ -0,0 +1,29 @@
const Logger = require('./logger');
const Config = require('./config').get;
// deps
const paths = require('path');
const bunyan = require('bunyan');
const { get } = require('lodash');
module.exports = class WebLog {
static createWebLog() {
const config = Config();
const logPath = config.paths.logs;
const rotatingFile = get(config, 'contentServers.web.logging.rotatingFile');
rotatingFile.path = paths.join(logPath, rotatingFile.fileName);
const serializers = Logger.standardSerializers();
serializers.req = bunyan.stdSerializers.req;
serializers.res = bunyan.stdSerializers.res;
const webLog = bunyan.createLogger({
name: 'ENiGMA½ BBS[Web]',
streams: [rotatingFile],
serializers,
});
return webLog;
}
};