Перенаправление стандартного вывода к системному журналу

14
задан Ivan Vučica 20 March 2009 в 09:46
поделиться

3 ответа

Можно передать Ваш по каналу stdout к syslog с эти logger команда:

ИМЯ

 logger - a shell command interface to the syslog(3) system log module

ОПИСАНИЕ

 Logger makes entries in the system log.  It provides a shell command
 interface to the syslog(3) system log module.

РЕЗЮМЕ

 logger [-isd] [-f file] [-p pri] [-t tag] [-u socket] [message ...]

, Если Вы не предоставляете сообщение на командной строке, она читает stdin

21
ответ дан 1 December 2019 в 08:18
поделиться

Попытайтесь обернуть выполнение двоичного файла с подходящим сценарием, который просто читает stdout и stderr, и отправьте любые данные, считанные от них при использовании syslog(). Это должно работать без любых изменений кода в обернутом приложении и быть довольно легко.

Не уверенный, если существуют существующие сценарии для передачи по каналу в, но запись той, не должно быть твердым если нет.

2
ответ дан 1 December 2019 в 08:18
поделиться

Можно перенаправить любой поток в C++ через rdbuf () команда. Это является немного замысловатым для реализации, но не настолько трудно.

необходимо записать streambuf, который произвел бы к системному журналу на переполнении () и заменил бы станд.:: суд rdbuf с Вашим streambuf.

пример, который произвел бы в файл (никакая обработка ошибок, непротестированный код)

#include <iostream>
#include <fstream>
using namespace std;

int main (int argc, char** argv) {
   streambuf * yourStreamBuffer = NULL;
   ofstream outputFileStream;
   outputFileStream.open ("theOutputFile.txt");

   yourStreamBuffer = outputFileStream.rdbuf();
   cout.rdbuf(yourStreamBuffer);

   cout << "Ends up in the file, not std::cout!";

   outputFileStream.close();

   return 0;
 }
5
ответ дан 1 December 2019 в 08:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: