서버를 돌리다가 에러가 발생하면 서버가 중단되면서 콘솔에 에러가 주르륵 출력이 되면, 이걸 보고 에러를 수정하고 다시 돌리는데, 이 때 문득 드는 생각이 개발 단계에서는 저 혼자 실행하고 에러가 발생하면 제가 어디서 어떻게 하다 에러가 발생했고 이런 것들이 어느정도 추측이 되니간 에러 수정이 수월한데, 만약 서비스라고 가정하면 어떤 유저가 어떻게 했는지 모르는 상태에서 그냥 에러만 딱 나와서 이 에러만 보고 수정하려면 어려울 수도 있겠다는 생각이 들어서 궁금해졌는데요,
실제 Asp.NET Core MVC를 사용하는 실무에서는 어떤식으로 로그를 사용하나요?
1개의 좋아요
제 경험으로는
기본적으로 콘솔로그 + 파일로그 + 인덱싱 스토리지 정도였네요
파일로깅은 기본 ILogger 구현체에 파일로깅 기능이 없어서(이건 좀 충격…)
NLog, Serilog, Log4Net 등등의 외부 모듈을 이용했어요.
인덱싱 스토리지는
로그 문자열 검색이 가능한 수준의 클라우드 서비스를 주로 이용했는데
splunk, elasticsearch, datadog 정도 였던 거 같네요.
지금은 요런 스토리지 로깅도 ILogger 를 지원하는 형태의 모듈로 제공되고 있어서
nuget 에서 내려받아서 약간의 설정만 하면 쓸 수 있게 되어있습니다.
아마 외부 3rd pary 모듈은 아무거나 선정해도 될 거 같구요.
(웬만하면 앞에 언급했던 클라우드 서비스 다 붙일 수 있는 걸로 알고 있어요)
선정한 모듈에 따라 설정 방식이 달라지니까
고거 기준으로 헤딩 좀 하시면 원하는 결과를 얻을 수 있을 거 같습니다.
ㅇㅅㅇ/
3개의 좋아요
서버 환경에 따라서 조금 다를 수 있겠는데요.
저의 경우 윈도우 서버에서 운영 중인데 기본적인 로직 오류 관련 로그는 NLog를 이용해 로컬 파일이나 이벤트 오류를 남겨놓고 로컬 파일은 elastic search로 수집해서 kibana 같은 로그 시스템에서 조회합니다. 그렇게 확인이 안되는 서버 오류의 경우 서버에 접근해서 이벤트 뷰어를 확인하거나 모니터링 툴을 이용해 cpu나 메모리, 네트워크 현황을 비교해서 원인 파악을 하는 편입니다. 물론 모니터링을 위해 툴 연동해놓긴 해야하구요.
2개의 좋아요
아하, 처음 보는 용어들이 잔뜩이네요 ㅎㅎ
한번 해당 키워드들로 검색을 해봐야겠네요.
답변 감사합니다!
리눅스 서버라도 어떤 걸 사용하냐의 차이일뿐 프로세스는 비슷할가요?