Node.js 로깅
노드에서 로깅을 처리하는 데 도움이 되는 라이브러리가 있습니까?Js 어플?내가 원하는 것은 모든 로그를 파일에 쓰고 특정 크기 또는 날짜 이후에 파일을 롤아웃하는 것과 같은 옵션이 필요하다는 것입니다.
log4js를 통합하여 모든 구성 세부 정보를 한 파일에 보관하고 유지보수가 용이하도록 다른 응용 프로그램 파일의 방법만 사용하려고 합니다.하지만 그것은 예상대로 작동하지 않습니다.제가 하려는 일은 다음과 같습니다.
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');
스크라이브.JS 경량 로거
저는 많은 로거를 살펴보았지만 가벼운 해결책을 찾을 수 없었습니다. 그래서 저는 github에 게시된 간단한 해결책을 만들기로 결정했습니다.
- 사용자, 날짜 및 수준별로 구성된 파일을 저장합니다.
- 당신에게 예쁜 출력을 줍니다 (우리는 모두 그것을 좋아합니다)
- 사용하기 쉬운 HTML 인터페이스
이것이 당신에게 도움이 되길 바랍니다.
온라인 데모
http://bluejamesbond.github.io/Scribe.js/
로그에 대한 안전한 웹 액세스
콘솔에도 예쁜 텍스트 인쇄!
웹 액세스
깃헙
https://github.com/bluejamesbond/Scribe.js
Log4js는 nodejs 응용 프로그램에 가장 많이 사용되는 로깅 라이브러리 중 하나입니다.
다음과 같은 다양한 멋진 기능을 지원합니다.
- 컬러 콘솔 로깅
- 노드의 console.log 함수 교체(선택 사항)
- 파일 크기를 기준으로 로그 롤링이 있는 파일 추가기
- SMTP, GELF, hook.io , Loggly appender
- 다중 프로세스 appender(작업자 프로세스가 있을 때 유용)
- 연결/익스프레스 서버용 로거
- 구성 가능한 로그 메시지 레이아웃/패턴
- 서로 다른 로그 범주에 대한 서로 다른 로그 수준(애플리케이션 로그의 일부는 DEBUG로, 다른 일부는 ERROR만 생성 등)
예:
설치:
npm install log4js
구定)
./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 }
용도:
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 에서 찾을 수 있습니다.
"로거".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 메시지"만 표시됩니다.레벨을 "TRACE"로 변경하면 두 줄 모두 test.log에 인쇄됩니다.
윈스턴은 대부분의 개발자들에게 강력한 선택입니다.저는 윈스턴을 오랫동안 사용해 왔습니다.최근에 winston을 종이 추적과 함께 사용하여 애플리케이션 로깅을 한 단계 더 발전시켰습니다.
여기 그들의 사이트에서 찍은 멋진 스크린샷이 있습니다.
유용성
서로 다른 시스템의 로그를 한 곳에서 관리할 수 있습니다.이 기능은 두 백엔드가 통신하고 두 백엔드의 로그를 한 번에 볼 수 있을 때 매우 유용합니다.
로그가 활성 상태입니다.프로덕션 서버의 실시간 로그를 볼 수 있습니다.
강력한 검색 및 필터
로그에서 특정 텍스트가 발견되는 경우 전자 메일을 보내도록 경고를 생성할 수 있습니다.
그리고 더 많은 http://help.papertrailapp.com/kb/how-it-works/event-viewer/ 를 찾을 수 있습니다.
및 노드 모듈을 winston-express
사용한 간단한 구성.
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
}));
'nodejlogger' 모듈은 간단한 로깅에 사용할 수 있습니다.세 가지 수준의 로깅(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 에서 액세스할 수 있습니다.
errorLogger는 logger.trace 주변의 래퍼입니다.그러나 logger의 수준이 ERROR이므로 logger.trace는 메시지를 logger의 appenders에 기록하지 않습니다.
이 문제는 errorLogger 본문에서 logger.trace를 logger.error로 변경하는 것입니다.
각각의 답은 56년 된 것이기 때문에 약간 구식이거나 가치가 떨어졌습니다.2020년에 얘기해요.
simple-node-logger는 콘솔, 파일 및 롤링 파일 추가기를 위한 단순한 멀티 레벨 로거입니다.특징은 다음과 같습니다.
레벨: 추적, 디버그, 정보, 경고, 오류 및 치명적인 레벨(모두 및 끄기)
기본값이 HH:mm:ss.SSS LEVEL 메시지로 설정된 유연한 appender/formatters 콘솔, 파일, 롤링 파일 등으로 출력을 보낼 appender 추가
로그 수준을 즉시 변경
도메인 및 범주 열
기본 appender에서 재정의할 수 있는 형식 메서드
경고, 오류 등을 포함한 모든 로그 문의 수를 추적하는 통계
모든 nodejs 웹 응용 프로그램에서 쉽게 사용할 수 있습니다.
// create a stdout console logger
const log = require('simple-node-logger').createSimpleLogger();
또는
// create a stdout and file logger
const log = require('simple-node-logger').createSimpleLogger('project.log');
또는
// create a custom timestamp format for log statements
const SimpleNodeLogger = require('simple-node-logger'),
opts = {
logFilePath:'mylogfile.log',
timestampFormat:'YYYY-MM-DD HH:mm:ss.SSS'
},
log = SimpleNodeLogger.createSimpleLogger( opts );
또는
// create a file only file logger
const log = require('simple-node-logger').createSimpleFileLogger('project.log');
또는
// create a rolling file logger based on date/time that fires process events
const opts = {
errorEventName:'error',
logDirectory:'/mylogfiles', // NOTE: folder must exist and be writable...
fileNamePattern:'roll-<DATE>.log',
dateFormat:'YYYY.MM.DD'
};
const log = require('simple-node-logger').createRollingFileLogger( opts );
메시지는 다음 사용자가 기록할 수 있습니다.
log.info('this is logged info message')
log.warn('this is logged warn message')//etc..
PLUS POINT: 콘솔이나 소켓에 로그를 전송할 수 있습니다.로그 수준에 추가할 수도 있습니다.
이것은 로그 기능을 처리하는 가장 효과적이고 쉬운 방법입니다.
전체 스택 추적으로 데이터를 기록하기 위한 경량 모듈입니다.
const logger = require('@grdon/logger')({
defaultLogDirectory : __dirname + "/logs",
})
// ...
logger(someParams, 'logfile.txt')
logger(anotherParams, 'anotherLogFile.log')
언급URL : https://stackoverflow.com/questions/12016474/node-js-logging
'programing' 카테고리의 다른 글
유니코드 지원에 wchar_t가 필요합니까? (0) | 2023.08.11 |
---|---|
MySQL이 쿼리를 반환하지만 연결이 닫히지 않음 (0) | 2023.08.11 |
Swift 배열에 작업(연합, 교차로)을 설정하시겠습니까? (0) | 2023.08.11 |
CORS(Cross-Origin Resource Sharing) - 여기에 누락된 내용이 있습니까? (0) | 2023.08.11 |
excel vba selection.address에서 행, 셀 값 가져오기 (0) | 2023.08.11 |