수색…
기본 서버 쪽 로깅
로깅의 첫 단계는 셸에서 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 문서를 확인하십시오. 다음 두 문서는 콘솔 로깅 학습을위한 귀중한 리소스입니다.
고급 서버 로깅 도구
서버 측 로깅을 실행하고 클라이언트 측 개발 도구를 모두 사용하면 Meteor Chrome DevTools Extension과 같은 Meteor 관련 확장 기능을 살펴볼 수 있습니다. 이를 통해 클라이언트에서 실제로 서버 로깅을 관찰 할 수 있습니다! 데이터베이스가 모든 곳에 있기 때문입니다. 로깅 중입니다.
데이터베이스 플랩에서의 로깅 오류
다음 예제는 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