gpt4 book ai didi

javascript - 在Nodewebkit环境中使用logger

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:46 29 4
gpt4 key购买 nike

我们有一个代码库(React.js 和 Hapi.js)。基于该代码库,我们有该应用程序的两个版本。一个是普通的Web应用程序,另一个是Nodewebkit(桌面)版本:

  • nw.js v0.12.3
  • io.js v1.2.0
  • Chrome 41.0.2272.76

本质上应用程序是相同的,只是略有差异。比如网页版有用户(登录)管理,而桌面版没有。 Web 版本使用 MySQL,而桌面版本使用 Sqlite。还有更多差异,但与问题无关:)

我们面临的问题是如何为 Nodewebkit 版本制作合适的记录器。在网页版本中,我们为 Hapi.js 实现了 Good-console。事情是这样的:

var options = {
ops: {
interval: 1000
},
reporters: config.loggers
};

models.sequelize.sync(/*{force: true}*/).then(function(){
server.register({
register: require('good'),
options: options
}, (err) =>{

if(err) {
console.error(err);
} else {
server.start(() =>{
console.info('Server started at ' + server.info.uri);
});
}
});

稍后在代码中它被用作:

}).catch(function (err) {
request.server.log(['error'], err.stack);
response({isError: true, message: 'Could not retrieve connection information'}).code(200);
});

效果正如预期的那样。

我们面临的问题是如何在 Nodewebkit 环境中包含相同的日志记录工具。通常,由于我们使用相同的代码库,日志调用也应该相同。应用程序中的所有文件都是相同的,除了index.js。我们有两个版本,一个用于启动 NW.js,另一个用于正常的 Web 启动。

如果我们在 NW.js 启动文件中使用 Good-console 初始化代码(适用于 Web 版本),则不会发生任何情况。服务器未启动,也没有错误。我已将良好控制台使用的 Node 模块转换为 ECMA5,因为 NW.js 引擎未运行 ECMA6,但同样没有任何反应。

早些时候,我们为 NW.js 版本实现了一个简单的记录器。仅在启动期间使用,其内容如下:

log4js = require('log4js');
log4js.configure({
appenders: [
{ type: 'console' },
{ type: 'file', filename: 'logs/project.log', category: 'projects' }
]
});

logger = log4js.getLogger('projects');
logger.setLevel('ERROR');
logger.setLevel('INFO');

server.route(require('./server/config/routes'));
models.sequelize.sync({/*force: true*/}).then(function () {
server.start(function () {
logger.info('Nodeweb kit Fun is Started :).');
});
});

技巧是如何使用相同的记录器调用,而不用代码中的“if”或类似技巧来感染代码。澄清问题:

良好的控制台代码:

 request.server.log(['error'], err.stack);
request.server.log(['error'], err.stack);

log4js代码:

logger.info('Nodeweb kit Fun is Started :).');

是否可以将 log4js 函数附加(当 NW 版本启动时)到 request.server,这样代码就无法识别登录功能?

或者其他一些想法非常值得赞赏。

最佳答案

我已经设法使用相同的代码来登录两个版本。只是在 NW 版本中我已经安装了 hapi-logger插件。

两个插件现在使用相同的函数签名:

request.server.log(['error'], err.stack);

关于javascript - 在Nodewebkit环境中使用logger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39161447/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com