NODE JSログ選択タイプ

6440 ワード

NODEの開発において、ログの選択はexpressのログモジュールを除いて、主に需要を満たすことができません.
ここで私はわざわざ二つの日誌モジュールを選択しました.
(参考:https://github.com/nomiddlename/log4js-node)
第一種類、Log 4 js
一、node+log 4 js
それを選ぶ理由は
  • nodeにロゴ4 jsモジュールがあります.直接
  • をインストールできます.
  • log 4 jsはexpressフレームと完璧に結合することができます.
  • log 4 jsはログを異なるレベルの異常またはエラーに分けることができます.魂は
  • を把握できます.
    二、据付運転
    無駄話は多くなくて、私達は今logs 4 jsをインストールして、とても簡単です:直接にあなたのプロジェクトのルートディレクトリで入力します.
    npm install log4js //          node_modules       log4js  
    簡単な配置、配置の前に、ロゴ4 jsの出力の6つのレベルを理解します.trace、debug、info、warn、error、fatal
    出力のレベルがinfoであれば、infoレベル以下のログは印刷されません.info情報、warm警告、errorエラー、fatal致命エラーのみ印刷されます.
    私達の簡単な実験の下で、app.jsファイルの修正は以下の通りです.
    var log4js = require('log4js'); //       log4js  
    log4js.configure({
    	appenders: [
            {
                type: "file", //             
                filename: "cheese.log", //        
                category: [ 'cheese','console' ] 
            },
            {
                type: "console" //          
            }
        ],
        replaceConsole: true //   console.log
    });
    プロジェクトのルートディレクトリの下でcheese.logという名前のログファイルが生成されていることが分かります.その中の内容は「INFO」consone-Express server listening on portです.     3000、コンソールの情報と一致します.
    更に深く突っ込んで、私達はap.jsに下記のコードを入れます.
    log4js.loadAppender('file');
    log4js.addAppender(log4js.appenders.file('ok.log'), 'ok'); //                   ok.log,     ok
    var logger = log4js.getLogger('cheese'); //         ,           cheese
    logger.setLevel('ERROR'); //      error
    console.error("  ,        ", { some: "AA", use: "   " }); //             
    logger.trace('Entering cheese testing');
    私達はログファイルの中に何が記録されているかを見てみました.はい、Entering cheese testingの文字が見つかりませんでした.私達が設定したレベルはtraceの情報を記録する必要がないからです.
    私たちは実験を続けて、ap.jsの中に下記のコードを入れます.
    logger.fatal('         .');
    var anotherLogger = log4js.getLogger('another');
    anotherLogger.debug("     ");  //       ,    ,         
    var okLog = log4js.getLogger('ok'); //      ok   
    okLog.debug("www.okhqb.com no1"); //        
    私たちは、fatalの情報は記録できることを発見しました.anotherのマークを定義したログファイルがないので、「加入したばかり」は記録できません.しかし、私たちはokを定義しています.そして、何のレベルも定義していません.だから、「wwww.okhqb.com」はもうok.logファイルに記録しています.
    アプリでコードを書く代わりにプロファイルを使って、下のように構成ファイルのlogl 4 m.jsonがあります.そして、ap.jsにlogs 4 js.co figure('myulog 4 js.uconfigrations.json');を追加すればいいです.
    {
      "appenders": [
        {
          "type": "file",
          "filename": "log_ok.log",
          "maxLogSize": 20480, //         
          "backups": 3,
          "category": "ok-logger" //   
        },
        {
          "type": "file",
          "absolute": true,
          "filename": "log_360.log",
          "maxLogSize": 20480,
          "backups": 10,
          "category": "360-logger" //            
        }
      ]
    } 
    nodeプロジェクトとより良い結合により、app修正のすべてのコメントを下記のコードに追加します.
    log4js.configure({
     appenders: [
       { type: 'console' },
       { type: 'file', filename: 'cheese.log', category: 'cheese' }
      ]
    });
    var logger = log4js.getLogger('cheese');
    logger.setLevel('INFO'); //     
    app.configure(function() {
      app.use(log4js.connectLogger(logger, { level: log4js.levels.INFO })); //   node   
    });
    上では、ロゴ4 jsの使い方を簡単に紹介しただけで、その機能はこれらだけではないです.
    第二種類、wiston
    これはノートを管理するための専門のログライブラリです.githuの中でforkが一番多いです.私達はそれが何か魅力があるかを見に来ました.https://github.com/flatiron/winston Winstonは、複数の送信と単純で一般的なログライブラリをサポートするように設計されています.wistonレコーダの各例は、複数の位置を異なる程度に配置することができます.私たちが欲しいエラーはデータベースに記録されますが、他の情報はコンソールに出力したいです.
    一、インストールは簡単です.直接npm install wistonでいいです.
    二、使う
    アプリ.jsに下記のコードを入力します.
    var winston = require('winston'); //     
    winston.log('info', 'Hello distributed log files!'); //        
    winston.info('Hello again distributed logs'); //   info       
    winston.add(winston.transports.File, { filename: 'somefile.log' }); //           
    winston.remove(winston.transports.Console); 
    
    上のコードは起動時にログ情報を出力しますが、somefile.logログファイルには記録されません.定義ファイルの前にすでに出力されていますので、場所を交換すればログ情報を記録できます.
    それを紹介する時、私達はそれをカスタマイズすることができると言って、それを私達の欲しい場所に使います.
    例えば、app.jsを修正して、上のコードを注釈します.
    var logger = new (winston.Logger)({
    	transports: [
      		new (winston.transports.Console)(), //    
      		new (winston.transports.File)({ filename: 'myfile.log' }) //   
    	]
    });
    logger.log('info', 'Hello distributed log files!');
    logger.info('Hello again distributed logs');
    からappを起動します.プロジェクトのルートディレクトリの下にmyfile.logsのファイルがあります.それを開けて、中に記録しました.
    {「level」:「info」、「message」:「Hello distributed log files!」、「timestamp」:「2014-0」    3-09 T 14:53:56.93 Z'''''''level':'info'、'message':'Hello again distributed logs','timestamp':'2014-0    3-09 T 14:53:56.955 Z"}.
    二つのログ情報
    二、ログレベル
    ロゴ4 jsと同じで、多くのレベルがあります.下記のコードをご覧ください.
      logger.log('silly', "127.0.0.1 - there's no place like home");
      logger.log('debug', "127.0.0.1 - there's no place like home");
      logger.log('verbose', "127.0.0.1 - there's no place like home");
      logger.log('info', "127.0.0.1 - there's no place like home");
      logger.log('warn', "127.0.0.1 - there's no place like home");
      logger.log('error', "127.0.0.1 - there's no place like home");
      logger.info("127.0.0.1 - there's no place like home");
      logger.warn("127.0.0.1 - there's no place like home");
      logger.error("127.0.0.1 - there's no place like home");
    デフォルトのレベルの場合
      winston.log('info', "127.0.0.1 - there's no place like home");
      winston.info("127.0.0.1 - there's no place like home");
    プロジェクトでは、ログレベルを定義します.このように設定できます.
    var logger = new (winston.Logger)({
        transports: [
          new (winston.transports.Console)({ level: 'error' }),
          new (winston.transports.File)({ filename: 'somefile.log' })
        ]
      });
    
    
    上の二つの日誌モジュールは簡単なだけです.個人はロゴ4 jsを使う傾向があります.後はこの二つの日誌モジュールをそれぞれIMでテストします.実際の運用の中で彼らの長所と短所を体験して、最終的にその日誌モジュールを使うことを提案します.