wrangler tail
Worker에 찍은 console.log
들을 편하게 보고싶은데, CF에서 제공하는 Real-time Logs는 내가 원하는 정보보다 방대하다. 아래는 그 로그의 예시인데, "logs" 부분에 당시 내가 찍은 console.log
가 있다면 담기는 식이다. 실패한 요청만 필터링을 거는 등 스마트하게 로그를 보고싶다면 wrangler tail
명령어를 이용하면된다.
{ "outcome": "ok", "scriptName": "entrypoint", "exceptions": [], "logs": [], // ****** 바로 여기 !! ********* "eventTimestamp": 1675348988505, "event": { "request": { "url": "https://...", "method": "GET", "headers": { "accept-encoding": "gzip", "cf-connecting-ip": "", "cf-ipcountry": "KR", "cf-ray": "", "cf-visitor": "{\"scheme\":\"https\"}", "connection": "Keep-Alive", "host": "", "user-agent": "", "x-forwarded-proto": "https", "x-real-ip": "" }, "cf": { ... } }, "response": { "status": 200 } }, "id": 1 }
내 Worker는 에러가 날 경우 아래와 같은 응답을 하고, console에 해당 에러를 찍어준다.
{ error: 'system error' }
이런 로그들만 모아서 보고싶다면 다음과 같이 입력해주면된다.
wrangler tail YOUR_WORKER_NAME --search error --format json | jq --stream 'fromstream(1|truncate_stream(inputs | select(.[0][0] == "logs")))'
--search
옵션은 console.log의 내용에서 문자열에 해당하는 로그들만 필터링하여 보여준다.
추가적으로 --format
옵션도 주었는데, 기본값은 pretty
이다. pretty
로 설정할 경우 자세한 내용이 나오지 않고 METHOD, 응답값, URL 정도만 나오므로 json
값으로 설정해주었다.
다음은 jq
를 활용한다.
jq는 Commandline JSON Processor로, JSON 입력을 처리해주는 기능을 제공한다. stream 처리를 하려하기에 약간 복잡하지만, "logs"만 뽑아오는 부분이라고 이해하면된다.
응용으로, 서버에서 logrotate
와 함께 백그라운드로 내내 돌려주면 나중에 문제가 생겼을때 로그를 바로 찾아볼 수 있다.
'프로그래밍 > General' 카테고리의 다른 글
vim Cheatsheet (0) | 2023.03.05 |
---|---|
VS Code 파란 물결 표시 색상 바꾸기 (flutter const) (0) | 2023.03.05 |
[AppsScript] 스프레드 시트 Row 업데이트한 날짜 자동으로 적는 법 (0) | 2023.01.11 |
[프로그래밍] 마인크래프트로 알아보는 랜덤이 랜덤이 아닌 이유 (0) | 2022.10.23 |
[Windows] Git Bash에 zsh (Oh-my-zsh) 설치해서 꾸미기 (2) | 2022.10.04 |