2017-09-23 16 views
0

사람이 사용자 정의 COUT를 만드는 간단한 예제를 줄 수 콘솔 및 syslog에 전송하는 방법, 나는 콘솔에 인쇄와 동시에 syslog에 문자열을 보낼 MyCout 클래스를 가지고 싶습니다.cout을 가지고 동시에

MyCout myCout 

myCout << "Test" << endl; 

콘솔 출력 "테스트"및 "테스트"가 syslog로 전송되어야합니다.

+7

간단하지 않습니다. 종종 우리는'stringstream'에서 출력을 만들고 대신'cout'과'syslog'에 최종 결과를 출력하기로했습니다. –

+0

FYI : 보통 stdout으로 보낸 출력을 * 콘솔 *로 보낼 수는 없습니다. 사용자는 원하는 곳 어디에서나 출력을 자유롭게 보낼 수 있습니다. 콘솔에 * insist *하고 싶다면, tty에 직접 써야합니다 (프로세스가 실제로 가지고 있다고 가정). 아마도 curses 라이브러리를 사용하는 것과 비슷할 것입니다. –

답변

-1

사소한 솔루션 (전용 C 스타일의 문자열 작품) :

#include <iostream> 
using namespace std; 

void syslog(const char* msg) { 
    std::cout << "syslog " << msg; 
} 

struct MyCout { 
    void operator<< (const char* rhs) { 
     std::cout << rhs << "\n"; 
     syslog(rhs); 
    } 
}; 

int main() { 
    MyCout myCout; 

    myCout << "Test"; 
    return 0; 
} 

이의 훨씬 더 복잡 당신이 출력 다르거 나 사용자 정의 유형에 wan't 경우 얻을.