サーチ…
基本的なサーバーサイドロギング
ロギングの最初のステップは、単にシェルからMeteorを実行するだけです。コマンド・コンソールでサーバー・ログを取得します。
meteor
次のステップは、std_outとstd_errの内容をログファイルにパイプすることです。
meteor > my_app_log.log 2> my_app_err.log
クライアントサイドロギングツール
サーバー側のロギングが完了したら、クライアント側にホップする時間です。コンソールAPIを調べていない場合は、治療の準備をしてください。実際には、すべてのChromeおよびSafariインストールに固有の組み込みコンソールAPIを使用して、さまざまなことを行うことができます。実際、Winstonやその他のロギングフレームワークを必要としないかもしれません。
まず、クライアント側のロギングと開発ツールをインストールすることです。 ChromeとSafariの両方が同梱されていますが、FirefoxにはFirebug拡張機能が必要です。
次に、Console APIのドキュメントを参照してください。次の2つの文書は、コンソールログを学習するための貴重なリソースです。
高度なサーバーログツール
サーバー側のログとクライアント側の開発ツールの両方を取得したら、Meteor Chrome DevTools ExtensionのようなMeteor固有の拡張機能を調べることができます。これにより、実際にクライアントのサーバログを観察できます。データベースはどこにでもありますから。ロギングと同様。
データベースフラップでのログ記録エラー
次の例は0.5〜0.7日の例で、データベースがクライアント側のカーソルをまだ入力していないときにエラーを記録する方法を示しています。
Template.landingPage.postsList = function(){
try{
return Posts.find();
}catch(error){
//color code the error (red)
console.error(error);
}
}
テンプレートヘルパーのデータコンテキストに関する情報のロギング
以下はChromeロギングAPIを使用しています。複数のテンプレートで.group()
構文を使用すると、異なるテンプレートのコンソールログが階層的なツリーにグラフィカルに整理されます。
また、現在のデータコンテキストを調べる方法と、データを文字列化する方法を確認することもできます。
Template.landingPage.getId = function(){
// using a group block to illustrate function scoping
console.group('coolFunction');
// inspect the current data object that landingPage is using
console.log(this);
// inspect a specific field of the locally scoped data object
console.log(JSON.stringify(this._id);
// close the function scope
console.groupEnd();
return this._id;
}
ロギングイベントとユーザーのやりとり
ChromeロギングAPIを使用する簡単な例
Template.landingPage.events({
'click .selectItemButton':function(){
// color code and count the user interaction (blue)
console.count('click .selectItemButton');
}
});
ログレベル変数を使用したロギング
ロギングはコンソールを混乱させることが多いため、ログレベルを定義して、記録されるデータの詳細を制御するのが一般的です。一般的なパターンは、ログレベル変数を指定することです。
var DEBUG = false;
var TRACE = false;
Template.landingPage.events({
'click .selectItemButton':function(){
TRACE && console.count('click .selectItemButton');
Meteor.call('niftyAction', function(errorMessage, result){
if(errorMessage){
DEBUG && console.error(errorMessage);
}
});
}
});
プロダクションでのロギングを無効にする
一部のチームでは、コードにコンソールログステートメントを残したいが、実稼働環境では表示されないようにすることができます。変数が設定されていない場合(おそらく環境変数)、ロギング関数をオーバーライドします。さらに、状況によっては、セキュリティ機能としての資格があります。
if (!DEBUG_MODE_ON) {
console = console || {};
console.log = function(){};
console.log = function(){};
console.error = function(){};
console.count = function(){};
console.info = function(){};
}
ウィンストン
デフォルトのロギングオプションよりも強力なものが必要な場合は、Winstonのようなツールを見たいかもしれません。大気に行き、利用可能な多くのWinstonパッケージの一つを探してください。
https://atmospherejs.com/?q=winston
ただし、Winstonは洗練された製品であり、多くの機能を提供しますが、アプリケーションに複雑なレイヤーを追加することにも注意してください。
ロベルベル
コミュニティが開発したLogLevelパッケージに特に言及する必要があります。 Meteorのバンドルパイプラインとうまく連携し、行番号とファイル名を保持しながら軽量で使いやすいというバランスを取っているようです。
https://atmospherejs.com/practicalmeteor/loglevel