RAZVLEKYHA Понедельник, 20.05.2024, 00:50
Приветствую Вас Гость | RSS
категории
Мои статьи [23]
статьи о icq -icq чатов [11]
эро рассказы [5]

менюшка

Новое на форуме

Наш опрос
Оцените мой сайт

Результат опроса Результаты Все опросы нашего сайта Архив опросов

Всего голосовало: 16

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
счетчик посещений
Счётчик тИЦ и PR Каталог Ресурсов Интернет Счетчик тИЦ, PR и обратных ссылок

Главная » Статьи » статьи о icq -icq чатов

Разбираем логи
Бот записывает массу информации в лог-файлы. Давайте разберемся как ее можно анализировать и использовать.

Все файлы логов хранятся в папке log. Они делятся на несколько категорий:

* system.log - в этот файл попадает вся информация о боте, за исключением логов http-сервера. Может использоваться для просмотра цельной картины происходящего в боте. Но анализ может быть затруднен из-за избыточной информации в этом файле.
* talk.log - этот файл предназначен для хранения только разговоров чата, я постарался отфильтровать отсюда все лишнее. При настройках по умолчанию файлы этого лога создаются за каждый день и хранятся всегда.
* error.log - очень важный файл, сюда попадает информация из потока ошибок бота. Анализ может затруднить тот факт, что здесь не видно источник ошибки - после какого сообщения она произошла. Для анализа причин необходимо использовать system.log.
* flood.log - сюда попадают сообщения, которые бот посчитал флудом. Обычно в них нет ничего страшного - это повторы или очень частые сообщения в чате. Но если вы видите большой поток повторяющихся сообщений с нескольких номеров - на это стоит обратить внимание, скорее всего ваш бот подвергся флуд-атаке. Для решения проблемы необходимо выделить уникальные номера из потока сообщений и добавить их в игнор-лист (файл idnore.txt). Сделать это можно разными способами. Лично я предпочитаю парсить логи с помощью Excel, а потом выделять уникальные номера Access.
* http.log - содержит информацию о http-запросах к вашей веб-админке. Здесь вы можете увидеть попытки несанкционированного доступа к вашему боту. Но прошу обратить внимание, что эти логи могут содержать важную информацию о паролях и других настройках вашего бота. Не передавайте этот лог просто так незнакомым людям.

Давайте теперь рассмотрим самое важное - лог ошибок. Как правило, при обработки исключения в боте используется конструкция:
view source
print?
1.try{
2. // некоторый текст программы
3.}catch (Exception ex){
4. ex.printStackTrace();
5. // какое-то сообщение пользователю чата об ошибке
6.}

В результате ошибки происходит запись стека вызовов программы в поток ошибок, а следовательно и в лог-файл. Сообщение обычно выглядит следующим образом:

08.02.2009 18:45:50 [ERROR] - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'mychat.rooms' doesn't exist
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at java.lang.reflect.Constructor.newInstance(Unknown Source)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at com.mysql.jdbc.Util.getInstance(Util.java:381)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1031)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3376)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3308)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1837)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1961)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2537)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2466)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1383)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at ru.jimbot.modules.chat.RoomWork.fillCash(RoomWork.java:59)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at ru.jimbot.modules.chat.UserWork.<init>(UserWork.java:84)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at ru.jimbot.modules.chat.ChatServer.start(ChatServer.java:71)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at ru.jimbot.Manager.start(Manager.java:196)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at ru.jimbot.modules.http.MainPage.srvs_start(MainPage.java:261)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at java.lang.reflect.Method.invoke(Unknown Source)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at ru.jimbot.modules.http.MainPage.doGetOrPost(MainPage.java:742)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at ru.jimbot.modules.http.MainPage.doGet(MainPage.java:718)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at org.garret.httpserver.JHttpSession.session(JHttpSession.java:154)
08.02.2009 18:45:50 [ERROR] -
08.02.2009 18:45:50 [ERROR] - at org.garret.httpserver.JHttpSession.run(JHttpSession.java:64)

В начале блока сообщений мы видим собственно ошибку "Table 'mychat.rooms' doesn't exist", а далее идет содержимое стека вызовов. Оно как правило не интересно. Но если причина ошибки вам непонятна - смотрите место вызова, произошедшее непосредственно в боте. Так в данном случае мы видим что ошибка произошла: "at ru.jimbot.modules.chat.RoomWork.fillCash(RoomWork.java:59)" - файл RoomWork.java, строка 59. Это первая строчка, качающаяся исходников непосредственно нашего бота, а не сторонней библиотеки. Что находится в этой строке можно поглядеть в исходных текстах бота. Проанализировав эту информацию часто можно определить причину произошедшей ошибки. В рассмотренном выше случае все понятно из текста ошибки - отсутствует таблица rooms в базе данных.

Что еще нужно знать о логах? Для создания логов используется стандартная и широко распространенная библиотека log4j. Описание ее возможностей вы можете посмотреть на официальном сайте. Начиная с версии 0.4.0 настройки логирования выведены во внешний файл конфигурации: lib\log4j.properties. В нем вы можете настроитьтакие параметры как: размер файлов логов, количество архивных файлов, способ обозначения названий архивных файлов.

Поглядите пример конфигурации в боте, описание настроек на официальном сайте, и вам все сразу станет понятно.

Категория: статьи о icq -icq чатов | Добавил: тоха (27.01.2011)
Просмотров: 456 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
профиль
Гость


Группа:
Гости
Время:00:50

Гость, мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизуйтесь!

музыка

uin бесплатно
бесплатная регестрация icq

раздатчик бонусов
Вы можете получить WMR-бонус в размере 0,01-0,10 WMR на свой кошелек 1 раз в сутки

Кошелек
Код Защитный код

Бонус предоставлен сервисом www.wmcasher.ru
при поддержке
Заработок для всех


наша кнопка


наша кнопочка! поставь к себе на сайт.





рекламма

Copyright MyCorp © 2024Конструктор сайтов - uCoz