私たちは1つのコードベース(React.jsとHapi.js)を持っています。そのコードベースに基づいて、我々はアプリケーションの2つのバージョンを持っています。Nodewebkit環境でのロガーの使用
- nw.js v0.12.3
- io.js v1.2.0デベロッパー
- クロム41.0.2272.76 : 一つは普通のWebアプリケーション、他方がNodewebkit(デスクトップ)バージョンです
基本的にアプリケーションは同じで、わずかな違いがあります。たとえば、Webバージョンにはユーザー(ログイン)管理がありますが、デスクトップにはありません。 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を除いて、アプリケーション内のすべてのファイルは同じです。私たちには2つのバージョンがあります.1つはNW.jsを起動し、もう1つは通常のWeb起動用です。
NW.jsの起動ファイルでGood Console初期化コード(Web verisonで動作する)を使用すると、何も起こりません。サーバーが起動されておらず、エラーもありません。 NW.jsエンジンがECMA6を実行していないので、良いコンソールで使用されているノードモジュールをECMA5に転送しましたが、何も起こりません。
以前は、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 :).');
});
});
トリックは、「もし」またはコードで同様のトリックを使用してコードをinfesintgせずに、同じロガー呼び出しを使用する方法です。
グッドコンソールコード:
request.server.log(['error'], err.stack);
request.server.log(['error'], err.stack);
log4jsコード:問題を明確にするため
logger.info('Nodeweb kit Fun is Started :).');
(NWバージョンが開始されたときに)アタッチする可能性があることは要求に機能をlog4js。サーバーでは、コードはログ機能を認識していませんか?
または他のアイデアを大歓迎します。