수색…


기본 서버 쪽 로깅

로깅의 첫 단계는 셸에서 Meteor를 실행하는 것입니다. 그러면 명령 콘솔에 서버 로그가 생깁니다.

meteor

다음 단계는 std_out과 std_err의 내용을 로그 파일에 파이프하는 것입니다.

meteor > my_app_log.log 2> my_app_err.log

클라이언트 측 로깅 도구

일단 서버 측에서 로깅을하면 클라이언트 측으로 넘어갈 시간입니다. 콘솔 API를 탐색하지 않은 경우 치료 준비를하십시오. 실제로 모든 Chrome 및 Safari 설치에 기본으로 제공되는 콘솔 API로 수행 할 수있는 모든 종류의 작업이 있습니다. 실제로 Winston이나 기타 로깅 프레임 워크가 필요 없다는 것을 알게 될 것입니다.

가장 먼저 할 일은 클라이언트 측 로깅 및 개발자 도구를 설치하는 것입니다. Chrome과 Safari는 모두 함께 제공되지만 Firebug에는 Firebug 확장이 필요합니다.

방화 광 익스텐션

그런 다음 Console API 문서를 확인하십시오. 다음 두 문서는 콘솔 로깅 학습을위한 귀중한 리소스입니다.

Chrome 개발자 도구

파이어 버그 (클라이언트)

고급 서버 로깅 도구

서버 측 로깅을 실행하고 클라이언트 측 개발 도구를 모두 사용하면 Meteor Chrome DevTools Extension과 같은 Meteor 관련 확장 기능을 살펴볼 수 있습니다. 이를 통해 클라이언트에서 실제로 서버 로깅을 관찰 할 수 있습니다! 데이터베이스가 모든 곳에 있기 때문입니다. 로깅 중입니다.

Chrome DevTools 확장 (서버)

데이터베이스 플랩에서의 로깅 오류

다음 예제는 0.5 - 0.7 일이며 데이터베이스가 클라이언트 측 커서를 아직 채우지 않은 경우 오류를 기록하는 방법을 보여줍니다.

Template.landingPage.postsList = function(){
  try{
    return Posts.find();
  }catch(error){
    //color code the error (red)
    console.error(error);
  }
}

템플릿 도우미의 데이터 컨텍스트 로깅 정보

다음은 Chrome Logging API를 사용합니다. .group() 구문을 여러 템플릿에서 사용하면 여러 템플릿의 콘솔 로그를 그래픽으로 체계적으로 정리하여 계층 구조 트리로 구성 할 수 있습니다.

또한 현재 데이터 컨텍스트를 검사하는 방법과 데이터를 문자열 화하는 방법을 볼 수도 있습니다.

Template.landingPage.getId = function(){
  // using a group block to illustrate function scoping
  console.group('coolFunction');

  // inspect the current data object that landingPage is using
  console.log(this);

  // inspect a specific field of the locally scoped data object
  console.log(JSON.stringify(this._id);

  // close the function scope
  console.groupEnd();
  return this._id;
}

로깅 이벤트 및 사용자 상호 작용

Chrome 로깅 API를 사용하는 간단한 예입니다.

Template.landingPage.events({
  'click .selectItemButton':function(){
    // color code and count the user interaction (blue)
    console.count('click .selectItemButton');
  }
});

로그 수준 변수를 사용하여 로깅

로깅은 종종 콘솔을 복잡하게 만들 수 있으므로 로그 수준을 정의하여 기록되는 데이터의 세부 정보를 제어하는 ​​것이 일반적입니다. 일반적인 패턴은 로그 수준 변수를 지정하는 것입니다.

var DEBUG = false;
var TRACE = false;
Template.landingPage.events({
  'click .selectItemButton':function(){
    TRACE && console.count('click .selectItemButton');

    Meteor.call('niftyAction', function(errorMessage, result){
        if(errorMessage){
            DEBUG && console.error(errorMessage);    
        }
    });
  }
});

프로덕션에서 로깅 사용 안 함

일부 팀은 코드에 콘솔 로그 문을 남기고 싶지만 프로덕션 환경에서는 표시하지 않도록하고 있습니다. 변수가 설정되지 않은 경우 로깅 기능을 무시합니다 (환경 변수 일 수도 있음). 또한 일부 상황에서는이 기능이 보안 기능으로 분류 될 수 있습니다.

if (!DEBUG_MODE_ON) {
    console = console || {};
    console.log = function(){};

    console.log = function(){};
    console.error = function(){};
    console.count = function(){};
    console.info = function(){};
}

윈스턴

기본 로깅 옵션보다 강력한 기능이 필요한 경우에는 Winston과 같은 도구를 사용하는 것이 좋습니다. 분위기로 이동하여 사용 가능한 많은 Winston 패키지 중 하나를 검색하십시오.

https://atmospherejs.com/?q=winston

그러나 Winston은 정교한 제품이며 많은 기능을 제공하지만 응용 프로그램에 복잡성이 추가됩니다.

Loglevel

LogLevel 패키지를 개발 한 커뮤니티에 특별히 언급해야합니다. Meteor의 번들 파이프 라인을 사용하고 라인 번호와 파일 이름을 보존하면서 가볍고 사용하기 쉽도록 균형을 맞추는 것처럼 보입니다.

https://atmospherejs.com/practicalmeteor/loglevel



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow