log4jsは、node.jsログ処理で最高のモジュールの1つです。コンソールまたはTJデバッグと比較して、次のことはnode.jsプロジェクトに不可欠です。
この記事では、log4jsの包括的な紹介を提供します。これにより、プロジェクトでlog4jsを簡単に、簡単に開発し、デバッグし、より良い監視またはトラブルシューティングをオンラインで使用できます。
小さなテスト
次の3行のコードは、log4jsの最も簡単な使用法を示しています。
//ファイル:SimpleSt.jsvar log4js = require( 'log4js'); var logger = log4js.getlogger(); logger.debug( "time:"、new date());
Calling .getLogger()は、log4jsロガーインスタンスを取得できます。このインスタンスの使用法は、コンソールの使用と同じです。 .debug(.info、.errorおよびその他の方法)を呼び出して、ログを出力できます。
Node Simplest.jsを実行すると、出力は次のとおりです。
$ node Simplest.js [2016-08-21 00:01:24.852] [Debug] [デフォルト] - 時間:2016-08-20T16:01:24.852Z
時間:2016-08-20T16:01:24.852Zは出力したいものです。前のものには、指定子が含まれています[2016-08-21 00:01:24.852] [debug] [デフォルト]が後でリストされます。
使いやすいのではありませんか?まあ、LOG4JSの高度な使用法に飛び込む前に、まずlog4JSの概念に精通してみましょう。
レベル
これを理解するのは難しくありません。ログのグレーディングです。ログが階層である場合にのみ、ログをLOG4JSに適切に表示することができます(ログの異なるレベルは、エラーは通常赤など、コンソールで異なる色を使用します)。
log4jsのログは9つのレベルに分割され、各レベルの名前と重みは次のとおりです。
{all:new level(number.min_value、 "all")、trace:trace:new level(5000、 "trace")、debug(10000、 "debug")、info:new level(20000、 "info")、warn:new level(30000、 "warn")、エラー:新しいレベル(40000、エラー "レベル(9007199254740992、 "Mark")、// 2^53 Off:new level(number.max_value、 "off")}前の写真:
これら2つのレベルのすべては、ビジネスコードで直接使用されていません。残りの7つは、ロガーインスタンス、.trace .debug .infoに対応する7つのメソッドです。つまり、これらのメソッドを呼び出すと、これらのログの平準化に相当します。したがって、以前の[2016-08-21 00:01:24.852] [debug] [デフォルト] - 時間:2016-08-20T16:01:24.852Zはこのログのレベルです。
タイプ
log4jsには、カテゴリ(タイプ)と呼ばれる概念もあります。ロガーインスタンスのタイプを設定し、別の次元に従ってログを区別できます。
// file:set-catetory.jsvar log4js = require( 'log4js'); var logger = log4js.getLogger( 'example'); logger.debug( "time:"、new date());
GetLoggerを介してロガーインスタンスを取得する場合、渡すことができる唯一のパラメーターはLoggerCategory(「例」など)です。このパラメーターは、ロガーインスタンスが属するカテゴリを指定します。これはTJのデバッグと同じです:
var debug = require( 'debug')( 'worker'); setInterval(function(){debug( 'conse come');}、1000);デバッグ「ワーカー」では、ログ分類でもあります。 OK、戻ってノードset-catetory.jsを実行してください:
[2016-08-21 01:16:00.212] [デバッグ]例-TIME:2016-08-20T17:16:00.212Z
以前の[2016-08-21 00:01:24.852] [debug] [デフォルト] - 時間:2016-08-20T16:01:24.852zとの唯一の違いは、[デフォルト]が例になっていることです。
カテゴリの使用は何ですか?レベルよりも柔軟性があり、ログの2番目の区別ディメンションを提供します。たとえば、set-catetory.jsなど、各ファイルに別のカテゴリを設定できます。
// file:set-catetory.jsvar log4js = require( 'log4js'); var logger = log4js.getLogger( 'set-catetory.js'); logger.debug( "time:"、new date());
ログ[2016-08-21 01:24:07.332] [debug] set-catetory.js-time:2016-08-20t17:24:07.331zこのログがset-catetory.jsファイルから来ていることを確認できます。または、さまざまなノードパッケージに異なるカテゴリを使用して、ログが登場するモジュールを区別できるようにします。
appender
さて、ログにはレベルとカテゴリがあり、入り口でのログのグレーディングと分類の問題を解決します。 LOG4JSでは、ログエクスポートの問題(つまり、ログ出力が出力される場所)がAppenderによって解決されます。
デフォルトのAppender
以下は、log4js内部のデフォルトのAppender設定です。
// log4js.jsdefaultconfig = {appenders:[{type: "console"}]}ご覧のとおり、ログがいかなる方法でも構成されていない場合、ログはデフォルトでコンソールに出力されます。
独自のAppenderを設定します
log4js.configureを使用して、必要なappenderを設定できます。
// file:custom-appender.jsvar log4js = require( 'log4js'); log4js.configure({appenters:[{file '、filename:' default.log '}]})var logger = log4js.getlogger(' custom-adfender '); logger.debug(time(' time( 'time);上記の例では、ログをファイルに出力してコードを実行します。 log4js現在のディレクトリにdefault.logという名前のファイルを作成します。 [2016-08-21 08:43:21.272] [Debug]カスタムアデンダー - 時間:2016-08-21T00:43:21.272Zはファイルに出力します。
log4jsによって提供されるアペンダー
コンソールとファイルは、これに加えて、log4jsによって提供される付録の両方です。
dateFile:ログはファイルに出力され、ログファイルは、デフォルト2016-08-21.logの出力など、特定の日付モードでスクロールすることができます。
SMTP:電子メールへの出力ログ。
MailGun:Mailgun APIを介してMailgunへの出力ログ。
レベルファルターはレベルでフィルタリングできます。
など、他のいくつかの付録では、ここで完全なリストを見ることができます。
フィルタリングレベルとカテゴリ
Appenderの構成を調整し、ログレベルとカテゴリをフィルタリングできます。
//ファイル:level-and-category.jsvar log4js = require( 'log4js'); log4js.configure({appenters:[{type: 'loglevelfilter'、 'loglevelfilter'、 'debug'、category: 'category1'、appender:{type: 'file'、filename: 'default " log4js.getLogger( 'category1'); var logger2 = log4js.getlogger( 'category2'); logger1.debug( "time:"、new date()); gger1.trace( "time:"、new date()、new date()); ogger2.debug( "time:"、new());実行して、default.logにログを追加します:
[2016-08-21 10:08:21.630] [Debug] Category1-Time:2016-08-21T02:08:21.629z
コードを見てみましょう:
loglevelfilterとレベルを使用してログレベルをフィルタリングすると、デバッグ以上の重みのあるすべてのログが出力されます。これは、前述のログレベルの重みの重要性でもあります。
カテゴリを選択して、カテゴリからログを出力します。カテゴリ2のログは除外されます。構成は、['category1'、 'category2']などの配列も受け入れるため、両方のカテゴリのログがファイルに出力されます。
レイアウト
レイアウトは、log4jsが提供する高度な機能です。レイアウトにより、各出力ログの形式をカスタマイズできます。 log4jsには、4つのタイプの形式が組み込まれています。
MessagePassthrough:ログのコンテンツのみを出力します。
基本:ログの内容の前に時間、ログレベル、カテゴリが追加され、ログのデフォルトレイアウトが通常追加されます。
色/色:基本に基づいてログに色を追加すると、Appenderコンソールはこのレイアウトをデフォルトで使用します。
パターン:これは、任意のフォーマットで定義できる特別なタイプです。
パターンの例:
// file:layout -pattern.jsvar log4js = require( 'log4js'); log4js.configure({appenters:[{type: 'console'、layout:{type: 'pattern'、pattern: '[%r] [%[%5.5p%] - %m%n'}}})var Logger =} log4js.getLogger( 'layout-pattern'); logger.debug( "time:"、new date());%r%p $ m $ nは、log4jsの組み込み仕様です。これを使用して、いくつかのメタ情報を出力できます。詳細については、log4jsドキュメントを参照できます。
写真のロガー、アペンダー、レイアウトの位置を説明しましょう。
実用的な戦闘:出力アクセスログアクセス。ノードアプリケーション用ログ
問題のチェックを容易にするために、アプリケーションリクエストのログは、生産環境でしばしば記録されます。 log4jsを使用して実装する方法は?コードを入力するだけです:
// file:server.jsvar log4js = require( 'log4js'); var express = require( 'express'); log4js.configure({appenters:[{type: 'datefile'、filename: 'access.log'、pattern: '-yyyy-mm-dd.log'、forterincludeperthern: '' '} Express(); app.use(log4js.connectlogger(log4js.getlogger( 'access')、{level:log4js.levels.info}))))))))))私たちがしたことを見てください:
Appenderは、ログからカテゴリアクセスを含むログを選択し、スクロールファイルに出力するように構成されています。
log4js.getLogger( 'Access')カテゴリアクセスを備えたロガーインスタンスを取得し、log4js.connectloggerミドルウェアに渡します。このミドルウェアはアクセス情報を収集し、このインスタンスを通じて印刷します。
サーバーを起動し、http:// localhost:5000にアクセスします。 access.log-2016-08-21.logという名前の追加ファイルがディレクトリにあり、2つのログが含まれていることがわかります。
[2016-08-21 14:34:04.752] [情報]アクセス - :: 1-- "Get/HTTP/1.1" 200 18 "" "Mozilla/5.0(Macintosh; Intel Mac OS X 10_11_0)AppleWebkit/537.36(khtml)
[2016-08-21 14:34:05.002] [情報]アクセス - :: 1-- "get /favicon.ico http/1.1" 404 24 "http:// localhost:5000/" "mozilla/5.0(macintosh; intel mac os x 10_11_0)applewebkit/537.36(hyhtml Chrome/52.0.2743.116 Safari/537.36 "
log4jsログの分類とappender関数を介して、アクセスログをスクロール更新ファイルに出力します。
要約します
この記事では、log4jsの使用法を包括的に紹介します。コンソールやシンプルなロギングツールと比較して、LOG4JSは使用がより複雑であり、もちろんより強力であり、生産レベルのアプリケーションに適しています。興味がある場合は、メッセージを残して教えてください。次に、ノードアプリケーションで構成を管理する方法を紹介できます。