log4JS는 node.js 로그 처리에서 가장 좋은 모듈 중 하나입니다. 콘솔 또는 TJ 디버그와 비교할 때 다음은 생산에 적용되는 Node.js 프로젝트에 필수 불가결합니다.
이 기사를 사용하면 Log4JS에 대한 포괄적 인 소개를 제공하여 프로젝트에서 쉽고 쉽게 개발 및 디버깅을하고 온라인으로 더 나은 모니터링 또는 문제 해결을 통해 Log4J를 사용할 수 있습니다.
작은 테스트
다음 세 줄의 코드는 Log4JS의 가장 쉬운 사용을 보여줍니다.
// 파일 : simplest.jsvar log4js = require ( 'log4js'); var logger = log4js.getLogger (); logger.debug ( "time :", new date ());
.getLogger ()를 호출하면 log4js logger 인스턴스를 얻을 수 있습니다. 이 인스턴스의 사용은 콘솔의 사용과 동일합니다. 로그를 출력하려면 .debug (.info, .error 및 기타 메소드)를 호출 할 수 있습니다.
Node Simplest.js를 실행하면 출력은 다음과 같습니다.
$ node simplest.js [2016-08-21 00 : 01 : 24.852] [디버그] [기본]-시간 : 2016-08-20T16 : 01 : 24.852Z
시간 : 2016-08-20T16 : 01 : 24.852Z는 우리가 출력하려는 것입니다. 이전에는 지정자가 포함되어 있습니다 [2016-08-21 00 : 01 : 24.852] [Debug] [Default]는 나중에 나열됩니다.
사용하기가 쉽지 않습니까? 글쎄, 우리가 Log4JS의 고급 사용법에 뛰어 들기 전에 먼저 Log4J의 개념에 익숙해 봅시다.
수준
이것은 이해하기 어렵지 않으며 로그의 등급입니다. 로그가 계층적일 때만 로그 4JS가 더 나은 로그를 표시 할 수 있습니다 (다른 레벨의 로그는 오류와 같이 콘솔에서 다른 색상을 사용합니다. 오류는 일반적으로 빨간색입니다). 생산시 .Debug에 속하는 민감한 정보를 피하는 것과 같이 로그를 선택적으로 떨어 뜨릴 수 있습니다.
log4J의 로그는 9 레벨로 나뉘며 각 레벨의 이름과 무게는 다음과 같습니다.
{All : New Level (Number.Min_Value, "All"), TRACE : New Level (5000, "Trace"), Debug : New Level (10000, Debug "), Info : New Level (20000,"Info "), WARN : New Level (30000,"Warn ", New Level (40000,"Error "), New Level (50000,"New ") 레벨 (9007199254740992, "mark"), // 2^53 OFF : New Level (number.max_value, "off")}이전 사진 :
이 두 수준은 모두 비즈니스 코드에서 직접 사용되지 않습니다. 나머지 7 개는 로거 인스턴스에 해당하는 7 가지 방법입니다. .trace .debug .info ... 다시 말하면,이 메소드를 호출 할 때는이 로그를 레벨링하는 것과 같습니다. 따라서 이전 [2016-08-21 00 : 01 : 24.852] [Debug] [default]-시간 : 2016-08-20T16 : 01 : 24.852Z는이 로그의 레벨입니다.
유형
Log4JS에는 범주 (유형)라는 개념이 있습니다. 로거 인스턴스의 유형을 설정하고 다른 차원에 따라 로그를 구별 할 수 있습니다.
// 파일 : 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 ( '일부 작업');}, 1000);디버그 '작업자'에서는 로그 분류이기도합니다. 좋아, 돌아와서 노드 set-catetory.js를 실행하십시오.
[2016-08-21 01 : 16 : 00.212] [디버그] 예제-시간 : 2016-08-20T17 : 16 : 00.212Z
이전 [2016-08-21 00 : 01 : 24.852] [Debug] [Default]-시간 : 2016-08-20T16 : 01 : 24.852Z와의 유일한 차이점은 [기본값]이 예가되었다는 것입니다.
카테고리의 사용은 무엇입니까? 레벨보다 유연하며 로그의 두 번째 차이 차원을 제공합니다. 예를 들어, set-catetory.js와 같은 각 파일에 대해 다른 범주를 설정할 수 있습니다.
// 파일 : set-catetory.jsvar log4js = require ( 'log4js'); var logger = log4js.getLogger ( 'set-catetory.js'); logger.debug ( "time :", new Date ());
Log [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 = {부록 : [{type : "console"}]}보시다시피, 로그가 어떤 식 으로든 구성되지 않으면 로그는 기본적으로 콘솔에 출력됩니다.
자신의 애플 렌더를 설정하십시오
우리는 log4js.configure를 통해 원하는 부서를 설정할 수 있습니다.
// 파일 : custom-appender.jsvar log4js = require ( 'log4js'); log4js.configure ({부록 : [{type : 'filename :'default.log '}]}) var logger = log4js.getLogger ('Custom-Appender ');위의 예에서는 로그를 파일로 출력하고 코드를 실행합니다. log4js는 현재 디렉토리에서 default.log라는 파일을 만듭니다. [2016-08-21 08 : 43 : 21.272] [Debug] Custom-Appender-Time : 2016-08-21T00 : 43 : 21.272Z는 파일에 출력합니다.
Log4JS가 제공 한 Appender
콘솔과 파일은 다음과 더불어 로그4JS에서 제공하는 부록입니다.
DateFile : 로그는 파일에 출력되며 로그 파일은 오늘 Default-2016-08-21.log에 대한 출력과 같은 특정 날짜 모드에서 스크롤 할 수 있으며 내일 기본값 -2016-08-22.log 로의 출력;
SMTP : 이메일로 로그를 출력합니다.
Mailgun : Mailgun API를 통해 Mailgun에 대한 출력 로그;
레벨 필터는 레벨을 통해 필터링 될 수 있습니다.
그리고 다른 부록들, 당신은 여기에서 전체 목록을 볼 수 있습니다.
필터링 레벨 및 카테고리
appender의 구성을 조정하고 로그 레벨과 범주를 필터링 할 수 있습니다.
// file : level-and-category.jsvar log4js = require ( 'log4js'); log4js.configure ({부록 : [{type : 'loglevelfilter', level : 'debug', 'category1', appender : {type : 'filen :'default.log '}})}}}}}}}}). log4js.getLogger ( 'category1'); var logger2 = log4js.getLogger ( 'category2'); logger1.debug ( "time :", new date ()); logger1.trace ( "time :", new date ()); logger2.debug ( "time :", new date ());실행, default.log에 로그를 추가하십시오.
[2016-08-21 10 : 08 : 21.630] [Debug] Category1- 시간 : 2016-08-21T02 : 08 : 21.629Z
코드를 살펴 보겠습니다.
loglevelfilter와 레벨을 사용하여 로그 레벨을 필터링하면 무게가 큰 무게가있는 모든 로그가 디버그와 동일하게 출력됩니다. 이것은 또한 앞에서 언급 한 로그 레벨 가중치의 중요성입니다.
카테고리를 통해 로그를 출력하려면 범주를 선택하십시오. 카테고리 2의 로그는 필터링됩니다. 구성은 또한 [ 'category1', 'category2']와 같은 배열을 허용하므로 두 범주의 로그가 파일에 출력됩니다.
공들여 나열한 것
레이아웃은 Log4JS가 제공하는 고급 기능입니다. 레이아웃을 통해 각 출력 로그의 형식을 사용자 정의 할 수 있습니다. Log4JS에는 4 가지 유형의 형식이 내장되어 있습니다.
MessagePassthrough : 로그의 내용 만 출력합니다.
기본 : 로그 내용 전에 시간, 로그 레벨 및 범주가 추가되며 로그의 기본 레이아웃이 일반적으로 추가됩니다.
Colored/Colored : 기본에 따라 로그에 색상을 추가하여 Appender Console 은이 레이아웃을 기본적으로 사용합니다.
패턴 : 원하는 형식으로 정의 할 수있는 특수 유형입니다.
패턴의 예 :
// 파일 : layout -pattern.jsvar log4js = require ( 'log4js'); log4js.configure ({부록 : [{type : 'console', layout : {type : '패턴', 패턴 : '[%[%5.5p%]] -%m%n'}}) var logger = var logger log4js.getLogger ( 'layout-pattern'); logger.debug ( "time :", new date ());%r %p $ m $ n은 log4js의 내장 지정자입니다. 이것을 사용하여 일부 메타 정보를 출력 할 수 있습니다. 자세한 내용은 Log4JS 문서를 참조하십시오.
그림에서 로거, appender 및 레이아웃의 위치를 설명해 봅시다.
실용 : 출력 액세스 로그 액세스. 노드 애플리케이션 용으로
문제 점검을 용이하게하기 위해, 출시 및 종료 응용 프로그램 요청의 로그는 종종 생산 환경에서 기록됩니다. log4js를 사용하여 구현하는 방법은 무엇입니까? 코드 만 입력하십시오.
// file : server.jsvar log4js = require ( 'log4js'); var express = require ( 'express'); log4js.configure ({부록 : [{type : 'datefile', 'access.log', Pattern : '-yyyyy-mm-dd.log', alwaysincludattern : true, access, access, acceptorn : '); express (); app.use (log4js.connectLogger (log4js.getLogger ( 'access'), {level : log4js.levels.info})); app.get ( '/', function (req, res) {res.send ( 'Front-End Foreign Journal Comment'); App.Listen (5000);우리가 한 일보기 :
Appender는 로그에서 카테고리 액세스로 로그를 선택하고 스크롤 파일로 출력하도록 구성됩니다.
log4js.getLogger ( 'Access')는 카테고리 액세스가있는 로거 인스턴스를 가져 와서 log4js.connectLogger 미들웨어로 전달합니다. 이 미들웨어는 액세스 정보를 수집 하고이 인스턴스를 통해 인쇄합니다.
서버를 시작하고 http : // localhost : 5000을 방문하십시오. 디렉토리에 Access.log-2016-08-21.log라는 추가 파일이 있으며 두 개의 로그가 포함되어 있음을 알 수 있습니다.
[2016-08-21 14 : 34 : 04.752] [Info] Access- :: 1-- "Get/Http/1.1"200 18 ""Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebkit/537.36 (Gecko와 같은 KHTML) Chrome/52.0.2743.116 SAFI/537.36.
[2016-08-21 14 : 34 : 05.002] [Info] Access- :: 1 - "get /favicon.ico http/1.1"404 "http : // localhost : 5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS x 10_11_0) Applewebkit/537.36 (Khtml, gecko). 크롬/52.0.2743.116 사파리/537.36 "
Log4JS 로그의 분류 및 Appender 기능을 통해 액세스 로그를 스크롤 업데이트 된 파일로 출력합니다.
요약
이 기사는 종합적으로 Log4JS의 사용을 소개합니다. 콘솔 또는 간단한 로깅 도구와 비교할 때 Log4JS는 사용하기가 더 복잡하고 물론 더 강력하며 생산 수준 애플리케이션에 적합합니다. 관심이 있으시면 메시지를 남겨주세요. 다음으로 노드 애플리케이션에서 구성을 관리하는 방법을 소개 할 수 있습니다.