Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
UriahHeep
222 / 217 / 41
Регистрация: 24.09.2012
Сообщений: 509
Записей в блоге: 2
#1

Класс log, выводящий в cout и в syslog - C++

27.05.2015, 15:11. Просмотров 395. Ответов 3
Метки нет (Все метки)

Для логгирования в Linux-системе (для самого вопроса это не важно) хочу использовать свой класс с перегруженным operator<<(). Лог должен писаться в std::cout и в syslog.
C++
class sLog
{
.....
}
 
sLog slog;
 
slog << std::string("string") << 55 << std::endl;
Первые два реализуются друзьями типа
C++
friend sLog & operator<<(sLog &, std::string &)
friend sLog & operator<<(sLog &, int)
Что должно быть вторым аргументом последнего operator<<(), чтобы отлавливать манипуляторы std::endl и std::hex и другие?

Добавлено через 20 минут

Не по теме:

Да, это велосипед на костылях.

Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2015, 15:11     Класс log, выводящий в cout и в syslog
Посмотрите здесь:

C++ по заданым значениям х и у найти значение величины log x y (log с основанием х )
По заданым значениям х и у найти значение величины log x y (log с основанием х) C++
class выводящий эллементы другого класса... C++
Производный класс. Перегрузка << (cout). C++
C++ Builder Печатный отчёт выводящий в MS Word
C++ Работа с файлами (код, выводящий из файла все теги)
Класс, выводящий таблицу умножения C++
Screen Saver, выводящий картинку через OpenGL C++ Builder
C++ Рекурсивный метод, выводящий все возможные разложения натурального числа n на множители
Написать код, выводящий на экран информацию о системе C++
C++ Написать для класса деструктор, выводящий надпись
C++ Создать класс содержащий строку и метод выводящий ее реверсное значение

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
5578 / 2612 / 239
Регистрация: 01.11.2011
Сообщений: 6,422
Завершенные тесты: 1
27.05.2015, 15:59     Класс log, выводящий в cout и в syslog #2
Вероятно basic_ostream и ios_base соответственно.
retmas
Жарю без масла
858 / 740 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
27.05.2015, 16:34     Класс log, выводящий в cout и в syslog #3
Цитата Сообщение от UriahHeep Посмотреть сообщение
Что должно быть вторым аргументом последнего operator<<(), чтобы отлавливать манипуляторы std::endl и std::hex и другие?
C++
1
2
sLog& operator<<(sLog&, ostream& (*)(ostream&));
sLog& operator<<(sLog&, ios_base& (*)(ios_base&));
UriahHeep
222 / 217 / 41
Регистрация: 24.09.2012
Сообщений: 509
Записей в блоге: 2
28.05.2015, 08:58  [ТС]     Класс log, выводящий в cout и в syslog #4
Ещё подскажите, как в случае с манипуляторами типа std::hex и std::oct их передать далее, т.е. отправить их в мой внутренний поток _ostrm:

C++
1
2
3
4
5
6
7
std::ostringstream _ostrm;  // Объявлен в классе sl
 
sLog& operator<<(sLog &sl, std::ios_base& (*)(std::ios_base& os))
{
//    sl._ostrm << std::ios_base& (*) (std::ios_base& os); // ???
    return sl;
}

И как конкретно определить, что пришёл std::endl, а не std::ends, например?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
sLog& operator<<(sLog& sl, std::ostream& (*)(std::ostream& os))
{
//    if (os == std::endl) { // ???
//        ....
//        sl._ostrm << endl;
//    }
 
    cout << sl._ostrm.str();
    sl._ostrm.clear();
    sl._ostrm.str(std::string());
 
    return sl;
}
Yandex
Объявления
28.05.2015, 08:58     Класс log, выводящий в cout и в syslog
Ответ Создать тему
Опции темы

Текущее время: 23:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru