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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
icpu
323 / 228 / 43
Регистрация: 10.03.2011
Сообщений: 1,091
Записей в блоге: 2
#1

Консоль для ведения логов - C++

17.08.2013, 20:19. Просмотров 859. Ответов 14
Метки нет (Все метки)

Не по теме:

Не уверен, что пишу туда, куда нужно, но есть только один способ узнать.


Интересуют существующие решения по сабжу.
Требования простые:
- Минимум зависимостей
- Цветной текст и фон
- Динамические фильтры записей
- Много буков
- Желательно, отдельный поток и кеширование на диск
- Картинки и ссылки приветствуются

Кто-нибудь знает подобные поделки?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2013, 20:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Консоль для ведения логов (C++):

Класс для вывода логов - C++
Добрый день. Недавно задался вопросом, как выводить логи. При чём в классе происходит вся работа с открытием файлов, выводом времени и...

Разработать программу для ведения базы данных - C++
Разработать программу для ведения базы данных, организованной на файлах. Программа должна использовать конфигурационный файл (текстовый) и...

Либы для логов и бандерлогов - C++
Начинается глобальное переархитектуривание, рефакторинг и все такое одного проекта. Заодно решил поменять текущую либу логирования (glog...

Задача с очередью. Составить программу для ведения очереди и учета количества компьютеров в филиалах - C++
Имеется следующая задача: Поставщик направляет товар Заказчику. Заказчик имеет сеть филиалов. Поступающий товар распределяется по...

Преобразование цикла для вывода на консоль - C++
Подскажите пожалуйста, как сделать вывод на консоль задаваемого значения с клавиатуры, чтобы мы вводили с клавиатуры, к примеру "name" и...

Запись логов в файл - C++
Добрый день. Есть небольшое клиент-серверное приложение на сокетах, работающее с БД. Вопрос: как лучше написать небольшой логгер,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.08.2013, 20:22 #2
вам именно консоль которую можно встроить в свое приложение или просто просмотрщик логов? или вам нужен просто логгер?
icpu
323 / 228 / 43
Регистрация: 10.03.2011
Сообщений: 1,091
Записей в блоге: 2
17.08.2013, 20:25  [ТС] #3
Скорее первое, чем второе. Если будет всё вместе - это вообще шик!
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.08.2013, 20:32 #4
Цитата Сообщение от icpu Посмотреть сообщение
Скорее первое, чем второе. Если будет всё вместе - это вообще шик!
Всё вместе это непонятное УГ.
Есть например логгер log4cpp, и у него есть стандартные "приемники" логов (консоль, файл, отправка по почте и т.д.).
Хочешь юзеру красиво выводить логи в окошко - пиши свой "приемник". С фильтрами аналогично.
icpu
323 / 228 / 43
Регистрация: 10.03.2011
Сообщений: 1,091
Записей в блоге: 2
17.08.2013, 20:41  [ТС] #5
Понятно. Тогда какие приёмники логов есть? Свой велосипед я всегда успею сделать, надо сначала чужие обкатать.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.08.2013, 20:44 #6
доки для log4cpp
log4cpp::FileAppender
log4cpp::RollingFileAppender
log4cpp::OstreamAppender
log4cpp::RemoteSyslogAppender
log4cpp::StringQueueAppender
log4cpp::SyslogAppender
log4cpp::Win32DebugAppender
icpu
323 / 228 / 43
Регистрация: 10.03.2011
Сообщений: 1,091
Записей в блоге: 2
17.08.2013, 20:52  [ТС] #7
Ясно. Значит так, мы друг друга не поняли. Мне нужен именно класс окна, отображающий сформированные сообщения. Формат сообщения - практически логи, но подразумевают большую интерактивность. Для создания подобного эффекта мне нужно делать субкласс окна RichEdit или подобных. Но не хочется по вполне объяснимым причинам. Есть что-нибудь в этом плане?
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.08.2013, 21:06 #8
привязка к окну привязывает к апи на котором это окно сделано. ищите, мб найдете то какой-то самопал
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
17.08.2013, 21:13 #9
если нужен отдельно вьювер с кнопочками и т.п. то как вариант такое решение:
лог обычный в файл, а вьювер - отдельное приложение, следящее за изменением этого файла и отображением его содержимого. отдельный проект писать на чем захочется. в проект, который генерирует лог никакие зависимости не потянутся.
icpu
323 / 228 / 43
Регистрация: 10.03.2011
Сообщений: 1,091
Записей в блоге: 2
17.08.2013, 21:17  [ТС] #10
Дык, уже 2 часа в гугле. Как в той старой шутке, "раньше 5 минут искал и 6 часов качал, теперь 6 часов ищешь и 5 минут качаешь". Короче, в долгий ящик.

Если сделаю красивое удобное RichEdit окошко для логов с фильтрами, выложить сюда?

Добавлено через 3 минуты
DU, нет, увы, именно окошко. Зависимости не особо волнуют, только объём готового приложения и требуемых библиотек. Платформа - Хрюша и его младшие братья.
А вьювер с такими запросами пейать не проще.
Jupiter
17.08.2013, 21:20
  #11

Не по теме:

Цитата Сообщение от icpu Посмотреть сообщение
Дык, уже 2 часа в гугле. Как в той старой шутке, "раньше 5 минут искал и 6 часов качал, теперь 6 часов ищешь и 5 минут качаешь". Короче, в долгий ящик.
Если сделаю красивое удобное RichEdit окошко для логов с фильтрами, выложить сюда?
хех...
из рабочего проекта на шарпе, фильтры вшиты в хмл конфиге логгера

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using log4net.Core;
using log4net.Appender;
 
namespace Cyclogram.Log
{
    public class LogEventAppender : AppenderSkeleton
    {
        public event EventHandler<LogEventArgs> NewLogEvent = null;
 
        protected override void Append(LoggingEvent loggingEvent)
        {
            if (NewLogEvent != null)
            {
                NewLogEvent.Invoke(this, new LogEventArgs(loggingEvent.Level, loggingEvent.MessageObject.ToString()));
            }
        }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
internal void LogToUser(object sender, Log.LogEventArgs e)
        {
            if (Level.Info == e.Level)
                mOutputErrorsRichTextBox.SelectionColor = Color.Green;
            else if (Level.Warn == e.Level)
                mOutputErrorsRichTextBox.SelectionColor = Color.Blue;
            else if (Level.Error == e.Level)
                mOutputErrorsRichTextBox.SelectionColor = Color.Red;
            else if (Level.Fatal == e.Level)
                mOutputErrorsRichTextBox.SelectionColor = Color.DarkRed;
                        
            mOutputErrorsRichTextBox.AppendText(e.Message);
 
        }

на плюсах не намного сложнее

0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
17.08.2013, 21:21 #12
Если известен формат логов, если он легко парсится, то можно по логам сгенерить html и отрисовать в каком-нибудь компоненте а-ля QWebView. Отображение когфигурить css-стилями.
icpu
323 / 228 / 43
Регистрация: 10.03.2011
Сообщений: 1,091
Записей в блоге: 2
17.08.2013, 21:32  [ТС] #13

Не по теме:

0x10, а чё париться, встрою в свою утилиту на 50Кб 15Мб Qt библиотек! И Chromium, пусть не пылится в папке "f:\sources\"! Что нам стоит DOM построить?

В целом, я к этому и иду. Сделать маленький парсер лог-файлов для окна RichEdit. По-факту, не хочу я тянуть большие, медленные и тяжеловесные библиотеки, хоть от винды, хоть от доброкорпорации. log4 выглядит неплохо, но подобный функционал у меня уже есть.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.08.2013, 21:39 #14
Ну вот чувак лепил консоль на Qt. Ну а смысл? К чему-то другому её уже не прицепить. Нафиг логгер который привязан к какому-то GUI
icpu
323 / 228 / 43
Регистрация: 10.03.2011
Сообщений: 1,091
Записей в блоге: 2
17.08.2013, 22:04  [ТС] #15
Что уже есть:
Собсно, ясно. То, чего хочу - нету. То, что есть - уже есть. Ладно, всем спасибо! Было познавательно.

Не по теме:

Jupiter,0x10, мне кажется, или народ в последнее время зажрался? Нет, я не коим образом не против мультиплатформенности, даже за, но есть такие области, где она недостижима. На сегодняшний день. Например, бренчмаркинг, криптография или оконные интерфейсы. Да и ВинАПИ поддерживается тем же Wine'ом на весьма приличном уровне, уж такое окно точно откроет.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2013, 22:04
Привет! Вот еще темы с ответами:

Автоматизация расшифровывания логов - C++
Добрый день. Собираюсь писать простую программу, для разбора логов: читает текстовый лог-файл, отсеивает лишние строки-мусор (большая...

Анализ логов музея. - C++
вот такая задачка!!!! В музее на протяжении дня рееструюеться время прихода и выхода каждого посетителя. таким способом за день...

Перегрузка оператора вывода на консоль для шаблонного класса - C++
Следующий код компилируется, но не линкуется: #include &lt;iostream&gt; using namespace std; template &lt;typename T&gt; class A { ...

Нужен подходящий символ кружка для вывода в консоль - C++
Нужен круг(Символ), чтоб работал в консольке c++.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.08.2013, 22:04
Ответ Создать тему
Опции темы

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