Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Log4Net + ListView 
V
    Опции темы
Mephisto
Дата 17.6.2009, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Люди, кто-то пытался перенаправить поток лога в ListView? Для того чтоб прям в самой программе смотреть на то что сейчас делается?
Насколько я понял, нужно скелетон их переопределять и делать асинхронного песаку в контрол? Или есть пути покороче?
PM   Вверх
Mephisto
Дата 17.6.2009, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Хотя, в принципе, уже тут нашел.

Добавлено через 57 секунд
На всякий случай продублирую, если кому нужно будет, но там прикроют тему:
Код

///<summary>
    ///</summary>
    public class ListViewAppender : AppenderSkeleton
    {
        private ListView m_pLVW;

        private delegate void
            UpdateControlDelegate(log4net.Core.LoggingEvent loggingEvent);

        private void UpdateControl(log4net.Core.LoggingEvent
                                       loggingEvent)
        {
            ListViewItem pItem = new ListViewItem();

            switch (loggingEvent.Level.ToString())
            {
                case "INFO":
                    pItem.ForeColor = System.Drawing.Color.Black;
                    break;
                case "WARN":
                    pItem.ForeColor = System.Drawing.Color.Blue;
                    break;
                case "ERROR":
                    pItem.ForeColor = System.Drawing.Color.Red;
                    break;
                case "FATAL":
                    pItem.ForeColor = System.Drawing.Color.DarkOrange;
                    break;
                case "DEBUG":
                    pItem.ForeColor = System.Drawing.Color.DarkGreen;
                    break;
                default:
                    pItem.ForeColor = System.Drawing.Color.Black;
                    break;
            }

            pItem.Text = loggingEvent.TimeStamp.ToString("G");
            pItem.SubItems.Add(loggingEvent.UserName);
            pItem.SubItems.Add(loggingEvent.Level.DisplayName);
            pItem.SubItems.Add(string.Format("{0}.{1}.{2}",
                                             loggingEvent.LocationInformation.ClassName,
                                             loggingEvent.LocationInformation.
                                                 MethodName, loggingEvent.LocationInformation.LineNumber));
            pItem.SubItems.Add(loggingEvent.RenderedMessage);
            m_pLVW.Items.Add(pItem);
            pItem.EnsureVisible();
        }


        protected override void Append(log4net.Core.LoggingEvent
                                           LoggingEvent)
        {
            // prevent exceptions
            if (m_pLVW != null)
            {
                // make thread safe
                if (m_pLVW.InvokeRequired)
                {
                    m_pLVW.Invoke(
                        new
                            UpdateControlDelegate(UpdateControl),
                        new object[]
                            {LoggingEvent});
                }
                else
                {
                    UpdateControl(LoggingEvent);
                }
            }
        }


        ///<summary>
        ///</summary>
        public ListView ListView
        {
            set { m_pLVW = value; }
            get { return m_pLVW; }
        }

        ///<summary>
        ///</summary>
        ///<param name="lvw"></param>
        public static void SetListView(ListView lvw)
        {
            lvw.HideSelection = false;
            lvw.Items.Clear();

            foreach (log4net.Appender.IAppender appender in
                GetAppenders())
            {
                if (appender is ListViewAppender)
                {
                    ((ListViewAppender) appender).ListView = lvw;
                }
            }
        }

        private static IAppender[] GetAppenders()
        {
            ArrayList appenders = new ArrayList();


            appenders.AddRange(((Hierarchy) LogManager.GetRepository()).Root.Appenders);

            foreach (ILog log in LogManager.GetCurrentLoggers())
            {
                appenders.AddRange(((Logger) log.Logger).Appenders);
            }

            return
                (IAppender[]) appenders.ToArray(typeof (IAppender));
        }
    }

PM   Вверх
Mephisto
Дата 17.6.2009, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Правда у меня приложение зависает на выходе почему-то если я подключаю этот Appender...

PM   Вверх
Mephisto
Дата 19.6.2009, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Не, все нормально работает. Это чудеса какие-то были в другом модуле, просто совпадение такое было, если включить этот лог, то там чудеса вылазили %)
PM   Вверх
nikitao
Дата 20.6.2009, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 4
Всего: 26



Монолог  smile 


простите , не сдержался.


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0430 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.