로깅은 Ruby 애플리케이션이 수행하는 작업에 대한 정보를 저장하는 프로세스입니다.
개발 및 프로덕션 환경 모두에서 매우 유용합니다.
왜?
로깅의 요점은 무슨 일이 일어났는지, 무엇이 잘못되었고 무엇이 잘되었는지에 대한 정보를 수집하는 것이기 때문입니다.
모든 종류의 정보를 기록할 수 있습니다. :
- 느린 SQL 쿼리(찾고 수정할 수 있도록)
- 오류 메시지
- 자세한 요청 정보(URL, Controller, Params, Views…)
이 정보를 사용하면 애플리케이션에서 문제의 원인을 더 빨리 진단하고 찾을 수 있습니다.
Rails 앱에서 로그는 /log
아래에 저장됩니다. 폴더.
개발 모드에서 development.log
파일이 사용되고 rails server
를 실행 중인 터미널에 로그 출력이 표시됩니다. 에.
지금 :
Logger
를 사용하여 Ruby에 로그인하는 방법을 알아보겠습니다. 수업!
로거 클래스
Ruby Logger 클래스는 기본 출력 형식과 다양한 심각도 수준으로 로그를 생성하는 방법을 제공합니다.
로그를 만드는 방법은 다음과 같습니다. :
logger = Logger.new("my_log.txt")
이렇게 하면 my_log.txt
에 로깅 메시지가 기록됩니다. .
프로그램이 실행되는 터미널에 메시지를 표시하려면 STDOUT
에 로그인하면 됩니다. .
좋아요 :
logger = Logger.new(STDOUT)
로깅 메시지는 얼마나 중요한지에 따라 다른 수준을 가질 수 있습니다.
레벨은 :
- 디버그
- 정보
- 경고
- 오류
- 치명적
- 알 수 없음
모든 레벨에는 해당 인스턴스 메소드가 있습니다.
따라서 "정보"를 기록하려면
이렇게 하세요 :
logger.info("I'm reading a RubyGuide about logging!")
실제 로그 항목은 다음과 같습니다. :
# I, [2019-08-08T19:22:00.152079 #642] INFO -- : I'm reading a RubyGuide about logging!
이러한 다양한 수준을 사용하면 로그 파일을 필터링하는 데 도움이 되어 원하는 것을 더 빨리 찾을 수 있습니다!
또한 시간이 지남에 따라 생성하는 오류 및 경고 메시지의 수를 확인하는 데 도움이 됩니다.
좋은 자료입니다!
로그 형식 지정 방법
Ruby 로그에 기본 출력 형식을 사용하는 것이 좋습니다. 도구를 기반으로 빌드할 수 있고 더 많은 사람들이 작동 방식을 이해할 수 있기 때문입니다.
여기에 다시 로그 줄이 있습니다. :
# I, [2019-08-08T19:22:00.152079 #642] INFO -- : test
몇 가지 구성요소가 있습니다. :
- "I"는 심각도 수준의 첫 글자를 나타냅니다.
- 괄호 안에는 이 로그 메시지를 생성한 프로세스의 타임스탬프 및 프로세스 ID(PID)가 표시됩니다.
- INFO는 심각도 수준의 전체 이름입니다.
- 콜론 뒤에 기록된 실제 메시지가 있습니다.
그러나 이 형식은 모든 사람에게 적합하지 않을 수 있습니다.
따라서 Ruby를 사용하여 변경할 수 있습니다!
방법은 다음과 같습니다. :
logger.formatter = proc { |severity, datetime, progname, msg| "#{severity}, #{datetime}, #{msg}\n" }
결과적으로 다음과 같은 결과를 얻습니다. :
DEBUG, 2019-08-08 19:39:01 +0200, testing
이를 사용하여 귀하와 귀하의 팀에 도움이 될 수 있는 추가 정보를 추가할 수 있습니다.
로그 크기를 제한하는 방법
로그의 크기를 추적하지 않는 한 로그는 정말 큰 파일이 될 수 있습니다.
로그 때문에 디스크 공간이 부족하면 시스템에서 온갖 이상한 일이 일어나기 시작합니다.
해결책이 있습니다!
로그 크기를 제한할 수 있습니다.
방법은 다음과 같습니다. :
MEGABYTE = 1024 ** 2 ONE_HUNDRED_MEGABYTES = MEGABYTE * 100 logger = Logger.new("my_log.txt", 1, ONE_HUNDRED_MEGABYTES)
첫 번째 매개변수는 로그 메시지를 저장할 위치입니다.
2번째 매개변수는 보관할 로그 파일 수(로그 회전)이고 마지막 매개변수는 최대 파일 크기입니다.
로그 읽기 및 필터링
알겠습니다. 로그를 가져왔습니다.
어떻게 읽고 필요한 것을 찾으십니까?
로그는 일반 텍스트 파일이므로 원하는 텍스트 처리 도구를 사용할 수 있습니다.
예를 들어 :
그렙.
텍스트 파일을 필터링하는 데 사용할 수 있는 명령줄 도구입니다.
방법은 다음과 같습니다. :
grep INFO my_log.txt
이것은 "INFO"로 기록된 모든 라인을 제공합니다.
다른 텍스트를 검색할 수 있습니다. grep
를 사용하여 로그 내부에 , "INFO"를 찾고 있는 것으로 바꾸면 됩니다.
사용할 수 있는 또 다른 Unix 도구는 less
입니다. (-R 옵션 사용).
키보드만 사용하여 로그를 스크롤할 수 있으며 검색 기능이 있습니다. .
다음을 사용할 수도 있습니다...
로그 관리 및 검색 전용 도구입니다.
Discourse의 로그스터 젬처럼
요약
Ruby 로그인, 정의, 작동 방식 및 사용 방법에 대해 배웠습니다.
이제 당신이 이것을 시도할 차례입니다.
읽어주셔서 감사합니다!