C + + 로그 () 로그 함수 구현

6040 단어 C++
전재 하 다 
수요: Log () 함수, 시간 에 따라 로그 정 보 를 자동 으로 기록 할 수 있 으 며, 매개 변수 유형 과 매개 변수 개 수 를 정 하지 않 습 니 다.
첫 번 째, 로그 시간 획득:
  get_data () 와 gettime () 은 현재 날짜 와 시간 을 각각 얻 습 니 다.
 1 #include <ctime>
 2 static std::string get_data()  3 {  4     time_t t = time(0);  5     struct tm *now = localtime(&t);  6  std::stringstream ss;  7     ss<<now->tm_year+1900<<'_'
 8         <<now->tm_mon+1<<"_"
 9         <<now->tm_mday; 10     return ss.str(); 11 } 12 
13 static std::string get_time() 14 { 15     time_t t = time(0); 16     struct tm* now = localtime(&t); 17  std::stringstream ss; 18     ss<<get_data()<<' '; 19     ss<<now->tm_hour<<':'
20         <<now->tm_min<<':'
21         <<now->tm_sec; 22     return ss.str(); 23 }

2.to_string()
C + + 에서 우 리 는 가 변 매개 변수 템 플 릿 을 사용 하여 부정 확 한 매개 변 수 를 실현 합 니 다.
우선 to 실현string () 매개 변 수 는 Log () 의 매개 변 수 를 모두 streamstring 에 전달 합 니 다.to_string () 은 재 귀적 인 방식 으로 이 루어 집 니 다.
#include <string> #include <sstream> template <typename T>
static int to_string(std::stringstream& ss,const T &t) { ss<<t; return 1; } template <typename T,typename...Args>
static int to_string(std::stringstream& ss,const T &t,const Args&...rest) { ss<<t; return to_string(ss,rest...); }

3.Log()
마지막 로그 () 는 위의 세 함수, get 를 호출 합 니 다.data () 는 당일 시간 을 얻어 대응 하 는 로그 파일 을 찾 습 니 다. tostring () 로그 내용 과 gettime () 시간 을 결합 하여 로그 파일 에 입력 하 십시오.
template <typename T,typename...Args>
static int Log(const T &t,const Args&...rest) { std::stringstream ss; to_string(ss,t,rest...); std::string path = LOG_PATH; path +=get_data();        //          std::fstream log_file; log_file.open(path,std::ios::out|std::ios::app); log_file<<"["<<get_time()<<"]"<<ss.str()<<std::endl; log_file.close(); std::cerr<<ss.str()<<std::endl; }

좋은 웹페이지 즐겨찾기