출력의 단순 리디렉션 대 로거 구현

2020-08-01 c++ logging io-redirection fileoutputstream

실제로 프로그램 출력을 파일로 리디렉션 할 수있을 때 로거를 구현하는 미덕이 무엇인지 궁금합니다. runMe> myFile.log

" 스레드 안전성 ", " 심각도 수준 "등과 같은 이유를 생각할 수 있지만, 로거가 명시 적으로 필요할 때 확신 할 수는 없습니다.

( "스레드 안전성"이 이유이고 심각도 수준이없는 경우 단일 스레드 프로그램에 로거가 필요하지 않고 파일로 리디렉션 만해도 잘 처리 할 수 ​​있다고 말할 수 있습니까?)

Answers

"스레드 안전성"이 이유이고 심각도 수준이없는 경우 단일 스레드 프로그램에는 로거가 필요하지 않고 파일로 리디렉션 만하면 잘 처리 할 수 ​​있다고 말할 수 있습니까?

IMO, 네. 모든 출력이 동일하게 가중치가 부여되는 (심각도 없음) 단일 스레드 프로그램은 실제 로거를 구현하기 위해 출력을 리디렉션하는 역할도 할 수 있습니다 (더 적은 오버 헤드로 수행).

즉, 이것은 프로그램이 의미있는 출력을 제공하지 않는다고 가정합니다. 로그 만. 그렇지 않으면 로깅 및 일반 출력에 대한 stderrstdout 만 있습니다. 프로그램이 성장하면 심각도를 구현할 수 있습니다.

로거는 또한 여러 위치, 네트워크 위치 (경우에 따라) 등에 대한 로깅을 단순화합니다. 이러한 작업은 충분한 허위로 명령 줄에서 수행 할 수 있지만 고려해야 할 사항입니다.

TL; DR : 예, 원하는 경우 리디렉션으로 수행 할 수 있지만 프로그램이 너무 커지면 심각도를 원할 가능성이 있으므로 모든 호출을 일관된 항목으로 작성하여 다음과 같은 경우 로거로 대체 할 수 있습니다. 필요가 생깁니다.

Related