[node.js] Node.js 로깅

Node.Js 애플리케이션에서 로깅을 처리하는 데 도움이되는 라이브러리가 있습니까? 내가하고 싶은 것은 모든 로그를 파일에 쓰고 싶습니다. 또한 특정 크기 또는 날짜 후에 파일을 롤아웃하는 것과 같은 옵션이 필요합니다.


log4js im을 통합하여 모든 구성 세부 정보를 하나의 파일로 유지하고 다른 응용 프로그램 파일의 메소드 만 사용하여 유지 보수를 쉽게했습니다. 그러나 예상대로 작동하지 않습니다. 여기 내가하려는 일이 있습니다.

var log4js = require('log4js');
log4js.clearAppenders()
log4js.loadAppender('file');
log4js.addAppender(log4js.appenders.file('test.log'), 'test');
var logger = log4js.getLogger('test');
logger.setLevel('ERROR');


var traceLogger = function (message) {
        logger.trace('message');
    };

var errorLogger = function (message) {
        logger.trace(message);
    };


exports.trace = traceLogger;
exports.error = errorLogger;

이 파일을 다른 파일에 포함시키고 시도했습니다.

log.error ("Hello Error Message");

그러나 작동하지 않습니다. 이것에 문제가 있습니까?



답변

윈스턴 은 꽤 좋은 로깅 라이브러리입니다. 파일을 사용하여 로그를 파일에 쓸 수 있습니다.

코드는 다음과 같습니다.

var winston = require('winston');

var logger = new (winston.Logger)({
  transports: [
    new (winston.transports.Console)({ json: false, timestamp: true }),
    new winston.transports.File({ filename: __dirname + '/debug.log', json: false })
  ],
  exceptionHandlers: [
    new (winston.transports.Console)({ json: false, timestamp: true }),
    new winston.transports.File({ filename: __dirname + '/exceptions.log', json: false })
  ],
  exitOnError: false
});

module.exports = logger;

그런 다음 다음과 같이 사용할 수 있습니다.

var logger = require('./log');

logger.info('log to file');


답변

Scribe.JS 경량 로거

나는 많은 로거를 살펴 보았고 가벼운 솔루션을 찾을 수 없었으므로 github에 게시 된 간단한 솔루션을 만들기로 결정했습니다.

  • 사용자, 날짜 및 레벨별로 구성된 파일을 저장합니다
  • 당신에게 아름다운 결과를 제공합니다 (우리 모두는 그것을 좋아합니다)
  • 사용하기 쉬운 HTML 인터페이스

이것이 도움이되기를 바랍니다.

온라인 데모

http://bluejamesbond.github.io/Scribe.js/

로그에 대한 안전한 웹 액세스

ㅏ

콘솔에 예쁜 텍스트를 인쇄합니다!

ㅏ

웹 액세스

ㅏ

깃 허브

https://github.com/bluejamesbond/Scribe.js


답변

Log4js 는 nodejs 애플리케이션에 가장 많이 사용되는 로깅 라이브러리 중 하나입니다.

그것은 많은 멋진 기능을 지원합니다 :

  1. 컬러 콘솔 로깅
  2. 노드의 console.log 기능 교체 (선택 사항)
  3. 파일 크기에 따라 로그 롤링이있는 파일 어 펜더
  4. SMTP, GELF, hook.io, Loggly 어 펜더
  5. 다중 프로세스 어 펜더 (작업자 프로세스가있을 때 유용함)
  6. 연결 / 익스프레스 서버용 로거
  7. 구성 가능한 로그 메시지 레이아웃 / 패턴
  8. 다른 로그 범주에 대한 다른 로그 수준 (앱 로그의 일부를 DEBUG로, 다른 일부는 오류 등으로 만들기)

예:

  1. 설치: npm install log4js

  2. 구성 ( ./config/log4js.json) :

    {"appenders": [
        {
            "type": "console",
            "layout": {
                "type": "pattern",
                "pattern": "%m"
            },
            "category": "app"
        },{
            "category": "test-file-appender",
            "type": "file",
            "filename": "log_file.log",
            "maxLogSize": 10240,
            "backups": 3,
            "layout": {
                "type": "pattern",
                "pattern": "%d{dd/MM hh:mm} %-5p %m"
            }
        }
    ],
    "replaceConsole": true }
  3. 용법:

    var log4js = require( "log4js" );
    log4js.configure( "./config/log4js.json" );
    var logger = log4js.getLogger( "test-file-appender" );
    // log4js.getLogger("app") will return logger that prints log to the console
    logger.debug("Hello log4js");// store log in file

답변

https://npmjs.org/doc/coding-style.html 에서 권장되는 issacs로 npmlog를 사용할 수도 있습니다
.

이 모듈은 https://github.com/isaacs/npmlog에서 찾을 수 있습니다.


답변

“logger.setLevel ( ‘ERROR’);” 문제의 원인입니다. 이유를 이해하지 못하지만 “ALL”이외의 것으로 설정하면 파일에 아무것도 인쇄되지 않습니다. 나는 조금 주위를 찌르고 코드를 수정했다. 그것은 나를 위해 잘 작동합니다. 두 개의 파일을 만들었습니다.

logger.js

var log4js = require('log4js');
log4js.clearAppenders()
log4js.loadAppender('file');
log4js.addAppender(log4js.appenders.file('test.log'), 'test');
var logger = log4js.getLogger('test');
logger.setLevel('ERROR');

var getLogger = function() {
   return logger;
};

exports.logger = getLogger();

logger.test.js

var logger = require('./logger.js')

var log = logger.logger;

log.error("ERROR message");
log.trace("TRACE message");

“node logger.test.js”를 실행하면 test.log 파일에 “ERROR message”만 표시됩니다. 레벨을 “TRACE”로 변경하면 test.log에 두 줄이 모두 인쇄됩니다.


답변

Winston은 대부분의 개발자에게 강력한 선택입니다. 나는 윈스턴을 오랫동안 사용 해왔다. 최근에 응용 프로그램 로깅을 다음 단계로 가져 오는 papertrail과 함께 winston을 사용했습니다.

그들의 사이트에서 멋진 스크린 샷입니다.

여기에 이미지 설명을 입력하십시오

유용한 방법

  • 한 곳에서 다른 시스템의 로그를 관리 할 수 ​​있습니다. 이것은 두 개의 백엔드 통신이 있고 두 위치에서 로그를 볼 수있을 때 매우 유용합니다.

  • 통나무가 살아 있습니다. 프로덕션 서버의 실시간 로그를 볼 수 있습니다.

  • 강력한 검색 및 필터링

  • 로그에 특정 텍스트가있는 경우 전자 메일을 보내도록 경고를 만들 수 있습니다.

더 많은 http://help.papertrailapp.com/kb/how-it-works/event-viewer/를 찾을 수 있습니다

간단한 구성을 사용하여 winston, winston-express그리고 winston-papertrail노드 모듈.

import winston from 'winston';
import expressWinston from 'express-winston';
//
// Requiring `winston-papertrail` will expose
// `winston.transports.Papertrail`
//
require('winston-papertrail').Papertrail;
// create winston transport for Papertrail
var winstonPapertrail = new winston.transports.Papertrail({
  host: 'logsX.papertrailapp.com',
  port: XXXXX
});
app.use(expressWinston.logger({
  transports: [winstonPapertrail],
  meta: true, // optional: control whether you want to log the meta data about the request (default to true)
  msg: "HTTP {{req.method}} {{req.url}}", // optional: customize the default logging message. E.g. "{{res.statusCode}} {{req.method}} {{res.responseTime}}ms {{req.url}}"
  expressFormat: true, // Use the default Express/morgan request formatting. Enabling this will override any msg if true. Will only output colors with colorize set to true
  colorize: true, // Color the text and status code, using the Express/morgan color palette (text: gray, status: default green, 3XX cyan, 4XX yellow, 5XX red).
  ignoreRoute: function (req, res) { return false; } // optional: allows to skip some log messages based on request and/or response
}));

누군가가 자신의 로그를 관리하는 데 도움이되기를 바랍니다.


답변

간단한 로깅을 위해 ‘nodejslogger’모듈을 사용할 수 있습니다. 3 가지 레벨의 로깅 (INFO, ERROR, DEBUG)이 있습니다.

var logger = require('nodejslogger')
logger.init({"file":"output-file", "mode":"DIE"})

D : 디버그, I : 정보, E : 오류

logger.debug("Debug logs")
logger.info("Info logs")
logger.error("Error logs")

모듈은 https://www.npmjs.com/package/nodejslogger 에서 액세스 할 수 있습니다.