2016-08-26 8 views
1

私たちは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。サーバーでは、コードはログ機能を認識していませんか?

または他のアイデアを大歓迎します。

答えて

-1

両方のバージョンで同じコードを使用してログインすることができました。 NWバージョンの場合は、hapi-loggerプラグインをインストールしました。

両方のプラグインは、現在、同じ関数シグネチャを使用:

request.server.log(['error'], err.stack); 
関連する問題