hyperskill - Introduction to logging 영어 원문
Introduction - 소개
당신이 강도 사건을 조사하고 있고, 무슨 일이 일어났는지 확인하려 한다고 가정합시다.
당신은 증언이 매우 희미한 증인을 가지고 있지만, 증거는 없습니다.
이러한 혼란한 상황을 풀기에는 매우 어려 울 겁니다.
만약 사건이 일어난 일대기를 복원하기 위한 감시 카메라가 녹화하고 있었다면...
따라서 지금, 버그를 조사하고 있다고 말해 봅시다.
하지만 이 상황에 어떤 "감시 카메라" 를 가지고 있나요?
분명히, 우리는 프로그램에 사고가 나기 전에 무슨 일이 일어났는지 모든 것을 기록하는 것이 필요합니다.
또한, 이는 어떤 연산 과정에서 사고가 일어났는지 알기에 좋습니다.
이러한 모든 기록들은 주로 log (로그) 안에 저장됩니다.
그러면, log 는 무엇일까요?
Log - 로그
Logging (로깅) 은 어플리케이션의 실행 과정 중에 기록된 행동을 참고합니다.
Logs (로그) 는 소프트웨어 어플리케이션의 이벤트에 대한 정보를 주는 기록을 의미합니다.
이러한 기록은 일어난 이벤트를 이해하는 데 충분한 메세지가 될 수 있습니다.
이는 타임스탬프, 설명, 심각성 수준 을 포함하고 있을 겁니다.
이러한 이벤트들은 유저가 만들어내거나, 시스템이 만들어낼 수 있습니다.
우리는 이러한 두 log 파일을 사용하며, 가끔은 표준 출력을 사용하여 이러한 기록을 만듭니다.
우리는 여러 가지 이유들을 위해 로깅을 필요로 합니다.
첫 번째로, 우리가 이후의 단계에서 트러블슈팅 을 할 때 많은 시간을 아껴 줍니다.
예를 들어 만약 프로그램이 부서졌거나, 무언가 잘못되었다면,
우리는 로그에서 어떤 부분에서 에러가 발생했는지 정확한 순간을 찾을 수 있습니다.
이는 디버깅 프로세스를 많이 쉽게 만듭니다.
두 번째로, 또한 로그로 누가 프로그램을 사용했었는지 추적이 가능합니다.
만약 그렇다면, 사이트에서 누가 요청을 사이트로 보냈었는지 찾을 수 있습니다.
또한, 로그는 인가를 만드는 특정 시스템의 연산을 감시하는 데 도와주며, 전체를 보고하는 데 크게 쉬워집니다.
이 방식으로, 우리는 프로그램이 어떻게 작동하는지, 이러한 프로그램들이 잘 작동하는지 언제나 알고 있습니다.
로깅 을 할 때 고려해야 할 몇 가지 것들이 있습니다 :
언제 로그할지? 무엇을 로그할지? 어떻게 로그할지?
이러한 질문들에 대한 대답을 찾아 내 봅시다.
When, What, and How - 언제, 무엇을, 어떻게
우리가 위에서 말했듯이, 로그를 생성하는 몇 가지 공통적인 이유가 있습니다.
- troubleshooting : 트러블슈팅
- auditing : 감사
- profiling : 프로파일링
- statistics : 통계
우리가 로그하는 것은 주로 어플리케이션에 달려 있습니다.
어떠한 상황에서든, 우리는 로그들을 통해 프로그램의 실행 경로를 이해 할 수 있어야 합니다.
비용이 드는 만큼, 과도한 로깅은 피하는 것이 중요합니다.
예를 들어, 모든 메서드, 매개변수는 추적하기 쉽기 때문에 시작과 끝을 로그 할 필요는 없습니다.
로그는 서버 이슈, 데이터베이스 이슈, 네트워크 이슈,
유저의 입력으로 인한 예상치 못한 에러, 동적으로 생성되는 객체의 상태, 설정값 오류
를 커버한다는 의미입니다.
당신의 로그 메세지 안에서 상황에 맞는 정보를 제공하는 것은 아주 중요합니다.
종종, 프로그램의 성공과 실패는 유저의 입력값에 의존합니다.
따라서, 당신은 중요하다면 이러한 유저의 입력값을 로그 메세지에 넣어야 합니다.
또한 동시성 환경에서 프로그램이 구동하고 있을 때 중요합니다.
이러한 경우 로그 메세지에 쓰레드 이름이 추가 될 수 있습니다.
Log levels - 로그 단계들
우리는 일찍이 많은 중요한 정보가 로그 파일에 추가 될 수 있음을 말했습니다.
그러나 어떤 종류의 정보들인가요?
여기 서로 다른 유형의 알맞은 로깅 레벨이 있습니다:
Debug, Info, Warn, Error, Fatal
(가장 적게 중요한 수준부터, 가장 중요한 수준까지.)
Debug - 디버그
Debug 로그들은 어플리케이션을 진단하는 데 사용됩니다.
디버깅 메세지들은 특정한 단계에서 프로그램이 무엇을 하는지,
이러한 활동들의 결과로 무엇을 얻은건지에 대해서 알려줍니다.
예를 들어, 메세지는 몇 개의 기능에 대한 정보를 담을 수 있으므로,
고쳐야 할 것을 볼 수 있습니다.
Info - 정보
Info 로그는 어플리케이션에 대한 중요한 정보를 로그하는 데 사용됩니다.
이 로그는 서비스 시작, 서비스 종료, 설정들, 구성들, 가정 을 기록하는 데 사용됩니다.
예를 들어, 방금 웹 사이트에 회원 가입을 한 유저에 대한 정보가 있습니다.
Warn - 경고
Warn 로그는 어플리케이션 고장의 첫 번째 단계로 고려됩니다.
Warn 로그는 주로 리소스에 반복하여 접근하려는 시도, 보조 데이터 누락,
혹은 서버를 백업하기 위해 주요 서버로 스위칭 할 때 적용합니다.
예시를 들어, 서버와 연결이 되지 않을 가능성에 대한 메세지가 있습니다.
하지만, 이 시점에서 유저에게 영향을 끼치진 않습니다.
Error - 에러
Error 로그는 더 치명적인 문제들에 대해 사용됩니다.
이러한 유형의 이슈는 주로 연산의 결과에 영향을 끼치지만,
프로그램을 종료하지는 않습니다.
에러들은 어플리케이션 고장의 두 번째 단계로 고려됩니다.
예를 들어, 데이터베이스가 잠깐 가동이 불가능하여 유저가 로그인을 못할 때 메세지가 있을 수 있습니다.
Fatal - 치명적 에러
Fatal 로그는 어플리케이션 고장의 세 번째 단계입니다.
Fatal 로그는 프로그램을 종료시킬 수 있는 훨씬 더 심각한 에러를 가르키는 데 사용됩니다.
이러한 메세지는 프로그램이 전체적으로 고장났다는 것을 말할 것이며,
이러한 실패의 시간과 조건들에 의존하여 개발자들이 이 문제를 어떻게 고칠 것인지 알아 낼 수 있습니다.
좋습니다, 이제 우리는 로그 파일에 주로 어떤 버그들이 작성되는지 압니다.
이제 우리는 log 를 표시해야 합니다.
하지만, 어떤 것이 표시되어야 하죠?
로그를 읽기 가능하며, 이해 가능하도록 만들기 위해서,
특별한 기록 형식이 있습니다.
밑에서 이에 대한 것을 더 알아 내 봅시다.
Log Format - 로그 형식
버그를 조사하기 위해서,
우리는 이것이 언제 일어났고, 얼마나 심각하며, 누가 발견했는지 알아야 합니다.
따라서, 로그 형식은 일반적으로 이렇게 생겼습니다 :
[date time][log level][message]
따라서, 로그는 에러가 발생한 날짜와 시간으로 시작합니다.
그리고 나서 로그의 단계가 오고, 마지막은 정확히 일어난 것에 대한 설명 메세지입니다.
더 구체적으로, 만약 우리가 예를 들어, 누가 우리의 사이트에 회원가입하는지 감시하고 싶다면,
우리는 Info 로그 단계라는 알맞은 로그를 필요로 합니다.
그 다음에 유저가 사이트에 데이터를 보내는 매 시간마다,
우리는 이러한 이벤트에 대한 메세지를 로그 합니다.
예를 들어, 2021년 2월 2일, 유저가 'demo' 라는 닉네임과 함께 오후 3시에 사이트에 회원가입 했다면,
로그는 이와 같이 보일 겁니다 :
[2021-02-02 15:00:00] [INFO] User 'demo' has registered
그리고 만약 'alex98' 이라는 이름을 가진 유저가 몇 가지 기술 이슈로 인해서 로그인을 하지 못한다면,
우리는 Error 메세지를 받을 겁니다 :
[2021-02-02 01:00:10] [ERROR] User 'alex98' cannot log in because the database is temporarily unavailable
따라서, 우리는 데이터베이스가 임시적으로 가동하지 못하기 때문에,
'alex98' 이라는 유저가 로그인에 실패했다는 것을 알게 됩니다.
우리는 문제의 범위를 좁혔으며, 우리가 해야 할 것을 정확할게 알게 됩니다.
데이터베이스를 확인하고, 이를 고친다
Conclusion - 결론
따라서, 우리는 로그가 무엇이고, 로그는 무엇을 위하여 존재하는지 알아 냈습니다.
우리는 또한 어떤 유형의 로그가 있는지 배웠으며, 어떻게 로그 메세지를 발생시키는지를 배워습니다.
이제 당신은 어떤 시간이던, 당신의 시스템의 연산을 감시하는 데 로그를 사용 할 수 있게 되었습니다.
words to remember
witnesses : 증인, 증거, 목격자, 목격하다, 입증하다
testimonies : 증언, 고백, 증명, 항의
vague : 희미한, 막연한, 분명치 않은
unravel : 풀다, 해명하다, 풀어내다
surveillance : 감시, 망봄
chronology : 연대기, 연대학, 연대순 배열
severity : 심각성, 엄격, 괴로움, 격렬
aware : 알고 있는, 알아차리고, 빈틈없는
excessive : 과도한, 과도의
unanticipated : 예상치 못한 <==> anticipated : 예상됨
contextual : 상황에 맞는, 전후 관계의
fatal : 치명적인, 운명의
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introduction to Docker' 카테고리의 다른 글
| JSON - JSON 정의와 기초 (1) | 2024.07.22 |
|---|---|
| Hashing: overview - 해싱: 개요 (2) | 2024.07.21 |
| REST - REST 란 무엇인가 (0) | 2024.07.19 |
| HTTP messages - HTTP 프로토콜 메세지 (0) | 2024.07.18 |
| HTTP URL - HTTP 프로토콜 경로 (0) | 2024.07.18 |