Что такое логи. Смотреть что такое "ЛОГ" в других словарях

Тема может и банальная, но когда программа начинает работать как то не так, и вообще вести себя очень странно, часто приходится читать логи. И много логов, особенно если нет возможности отлаживать программу и не получается воспроизвести ошибку. Наверно каждый выработал для себя какие то правила, что, как и когда логировать. Ниже я хочу рассмотреть несколько правил записи сообщений в лог, а также будет небольшое сравнение библиотек логирования для языков php, ruby и go. Сборщики логов и системы доставки не будут рассматриваться сознательно (их обсуждали уже много раз).

Есть такая linux утилита, а также по совместительству сетевой протокол под названием syslog. И есть целый набор RFC посвящённый syslog, один из них описывает уровни логирования https://en.wikipedia.org/wiki/Syslog#Severity_level (https://tools.ietf.org/html/rfc5424). Согласно rfc 5424 для syslog определено 8 уровней логирования, для которых также дается краткое описание. Данные уровни логирования были переняты многими популярными логерами для разных языков программирования. Например, http://www.php-fig.org/psr/psr-3/ определяет те же самые 8 уровней логирования, а стандартный Ruby logger использует немного сокращённый набор из 5 уровней. Несмотря на формальное указание в каких случаях должен быть использован тот или иной уровень логов, зачастую используется комбинация вроде debug/info/fatal - первый для логирования во время разработки и тестирования, второй и третий в расчёте на продакшен. Потом в какой то момент на продакшене начинает происходить что то не понятное и вдруг оказывается, что info логов не хватает - бежим включать debug. И если они не сильно нагружают систему, то зачастую так и остаются включенными в продакшен окружении. По факту остаётся два сценария, когда нужно иметь логи:

  • что-то происходит и надо знать что
  • что-то сломалось и нужно дополнительно активировать триггер
По триггеру может происходить: уведомление об ошибке на email, аварийное завершение или перезапуск программы или другие типичные сценарии.

В языке Go в котором всё упрощено до предела, стандартный логер тоже прилично покромсали и оставили следующие варианты:

  • Fatal - вывод в лог и немедленный выход в ОС.
  • Panic - вывод в лог и возбуждение «паники» (аналог исключения)
  • Print - просто выводит сообщение в лог
Запутаться, что использовать в конкретной ситуации уже практически невозможно. Но сообщения в таком сильно усеченном виде сложно анализировать, а также настраивать системы оповещения, типично реагирующих на какой нибудь Alert\Fatal\Error в тексте лога.

Я часто при написании программы с нуля повсеместно использую debug уровень для логирования с расчётом, что на продакшене будет выставлен уровень логирования info и тем самым сократится зашумлённость сообщениями. Но в таком подходе часто возникают ситуация, что логов вдруг становится не хватать. Трудно угадать, какая информация понадобиться, что бы отловить редкий баг. Возможно рационально всегда использовать по умолчанию уровень info, а в обработчиках ошибок уровень error и выше. Но если у вас сотни и больше сообщений лога в секунду, то тогда наверно есть смысл тонкой настройки между info/debug. В таких ситуациях уже имеет смысл использовать специализированные решения что бы не просаживать производительность.

Есть ещё тонкий момент, когда вы пишите что то вроде logger.debug(entity.values) - то при выставленном уровне логирования выше debug содержимое entity.values не попадёт в лог, но оно каждый раз будет вычисляться отъедая ресурсы. В Ruby логеру можно передать вместо строки сообщения блок кода: Logger.debug { entity.values } . В таком случае вычисления будут происходить только при выставленном соответствующем уровне лога. В языке Go для реализации ленивого вычисления в логер можно передать объект поддерживающий интерфейс Stringer.

После того, как разобрались с использованием уровней логов, нужно ещё уметь связывать разрозненные сообщения, особенно это актуально для многопоточных приложений или связанных между собой отдельных сервисов, когда в логах все сообщения оказываются вперемешку.

Типичный формат строки сообщения в логе можно условно разделить на следующие составные части:

+ +
Где:

  • system info: метка времени, ид процесса, ид потока и другая служебная информация
  • message: текст сообщения
  • context: любая дополнительная информация, контекст может быть общим для сообщений в рамках какой то операции.
Для того, чтобы связать пары запрос\ответ часто используется http заголовок X-Request-ID . Такой заголовок может сгенерировать клиент, или он может быть сгенерирован на стороне сервера. Добавив его в контекст каждой строчки лога появится возможность лёгким движением руки найти все сообщения возникшие в рамках выполнения конкретного запроса. А в случае распределенных систем, заголовок можно передавать дальше по цепочке сетевых вызовов.

Но с единым контекстом в рамках запроса возникает проблема с различными ORM, http клиентами или другими сервисами\библиотеками, которые живут своей жизнью. И ещё хорошо, если они предоставляют возможность переопределить свой стандартный логер хотя бы глобально, а вот выставить контекст для логера в рамках запроса зачастую не реально. Данная проблема в основном актуальна для многопоточной обработки, когда один процесс обслуживает множество запросов. Но например в фрэймворке Rails имеется очень тесная интеграция между всеми компонентами и запросы ActiveRecord могут писаться в лог вместе с глобальным контекстом для текущего сетевого запроса. А в языке Go некоторые библиотеки логирования позволяют динамически создавать новый объект логера с нужным контекстом, выглядит это примерно так:

ReqLog:= log.WithField("requestID", requestID)
После этого такой экземпляр логера можно передать как зависимость в другие объекты. Но отсутствие стандартизированного интерфейса логирования (например как psr-3 в php) провоцирует создателей библиотек хардкодить малосовместимые реализации логеров. Поэтому если вы пишите свою библиотеку на Go и в ней есть компонент логирования, не забудьте предусмотреть интерфейс для замены логера на пользовательский.

Резюмируя:

  • Логируйте с избытком. Никогда заранее не известно сколько и какой информации в логах понадобится в критический момент.
  • Восемь уровней логирования - вам действительно столько надо? По опыту должно хватить максимум 3-4, и то при условии, что для них настроены обработчики событий.
  • По возможности используйте ленивые вычисления для вывод сообщений в лог
  • Всегда добавляйте текущий контекст в каждое сообщение лога, как минимум requestID.
  • По возможности настраивайте сторонние библиотеки таким образом, чтобы они использовали логер с текущим контекстом запроса.

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

Какая информация еще нужна?

Как говорилось выше, помимо стандартных параметров, владелец сайта должен знать еще массу других данных:

  • Какие страницы являются наиболее посещаемыми.
  • По каким поисковым запросам пользователи чаще попадают на сайт.
  • Какие браузеры или же операционные системы являются наиболее востребованными у посетителей.
  • Какое разрешение экрана используют посетители чаще всего.
  • И многое другое.

Как это узнать?

В преимущественном большинстве случаев на сайтах устанавливается платный или же бесплатный счетчик, при этом ресурс, который его предоставляет, осуществляет тщательный анализ сайта и ведет статистику посещений, с которой можно в любой момент ознакомиться. Особенно использование таких счетчиков является востребованным в том случае, если человек размещает собственный сайт на бесплатном хостинге. Рассматривая, что такое лог, важно научиться работать и с такими счетчиками, так как, по сути, они включают в себя большинство нужных данных.

Преимущественное большинство хостеров, предоставляющих платный хостинг, изначально дают своим клиентам возможность использовать средства анализа, которые уже установлены в созданный сайт. К примеру, в серверах Apache применяется специализированная утилита под названием Webalizer, которая используется в роли дополнительного модуля сервера.

Те, кто пользуются платными хостингами, могут также полностью самостоятельно обрабатывать все данные касательно своего сайта, так как веб-мастер, который знает, что такое лог сайта и как им пользоваться, имеет полный доступ ко всей нужной информации.

Что это?

На любом сайте ведется собственный лог, в который веб-мастер может заглянуть в любой удобный ему момент. Что такое лог? Это отдельный текстовый файл, в котором находится информация касательно всех запросов к сайту, а также касательно различных ошибок, относящихся к этим запросам.

Как данные записываются в лог?

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

  • IP-адрес посетителя.
  • Точное время осуществления запроса.
  • Браузер, который использует пользователь.
  • Операционная система, которую использует пользователь.
  • Интересующая его страница.
  • Адрес страницы, с которой был осуществлен переход на целевую.

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

Грамотный анализ логов сайта позволяет веб-мастеру определить, как именно используется его ресурс и в каком направлении его более актуально развивать.

Какую информацию дают логи?

Просматривая логи сайта, можно найти огромнейшее количество полезной информации, которая позволит улучшить дальнейшее продвижение ресурса и сделать его более эффективным:

  • Посещаемость . Конечно, такой показатель определяется и стандартным счетчиком, который может присутствовать на каждой странице, но в логе эти данные предоставлены более подробно, включая посещаемость по дням, часам или месяцам. Также посредством использования логов можно определить часы всплеска или же затишья посещаемости, что крайне важно знать, занимаясь обслуживанием сайта.
  • Трафик . В данном случае предоставляется как трафик каждой отдельной страницы, так и суммарный трафик сайта за определенный период времени.
  • Конверсия. Данный параметр позволяет определить, каким образом посетители перемещаются по вашему ресурсу, то есть они просмотрели одну страницу и закрыли или же все-таки начали «путешествовать» по вашему сайту, просматривая одну страницу за другой. Уровень конверсии позволяет косвенно определить качество работы вашего сайта.
  • Заброшенные страницы. Рассматривая, что такое логи сервера, часто можно определить, что в них находятся заброшенные страницы, то есть те, которые посещаются чрезвычайно редко. В такой ситуации веб-мастер должен провести тщательный анализ ситуации, ведь может быть так, что страницы перестали интересовать людей или же их стало трудно найти среди множества других на вашем сайте.
  • Популярные страницы. Веб-страницы, которые являются наиболее посещаемыми. Можно применять их в качестве образца в процессе создания других страниц, а в случае необходимости можно также направлять с этих страниц пользователей к каким-либо другим, которые являются заброшенными или менее популярными.
  • Поисковые запросы. Помимо всего прочего, в логах сайта присутствует также эффективность тех метатегов, ключевых слов и самих названий веб-страниц, которые были вами использованы и по которым ваш сайт смогли найти те или иные поисковые системы. Соответственно, в логах находятся данные и о том, какой именно поисковик по определенному запросу нашел ваш сайт.

Если Вы, уважаемый читатель, активно пользуетесь Интернетом, то Вам наверняка встречались такие слова и словосочетания: лог, лог-файл или логи сервера. И Вы никогда не задумывались о том, что же это такое? В данной статье мы сегодня и постараемся подробно ответить на данный вопрос.

Лог (или, по-другому, логи сервера, лог файл, данные словосочетания являются синонимами) – это файл текстового формата, в который заносятся все данные обо всех действиях любых пользователей на серверах, будь то локальные сервера какой-либо организации или веб-сервера некоего хост-провайдера, на котором работают сайты, или FTP-сервер Вашей районной сети.

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

Поговорим о лог-файлах веб-серверов, ибо их чаще всего просматривает почти каждый первый системный администратор.

При каждом обращении любого пользователя к веб-сайту происходит запись об этом в файл лога. При этом срабатывают несколько событий.

1. Осуществление запроса страницы. Когда пользователь вводит в адресной строке своего браузера имя какого-либо интернет-ресурса и нажимает клавишу Ввод, браузер осуществляет в соответствии с определенными правилами поиск требующегося сервера и передает ему запрос на показ страницы. В запросе серверу отправляется следующая информация:

  • IP-адрес компьютера, с которого был послан запрос на получение страницы (или IP-адрес прокси-сервера, используемого клиентом);
  • адрес запрашиваемой интернет-страницы (IP-адрес);
  • дата и время отправки запроса серверу;
  • информация о географическом местоположении клиента, осуществившего запрос к серверу (или местоположение используемого клиентом прокси-сервера);
  • наименование и версия используемого клиентом интернет-браузера, с которого и был осуществлен запрос к серверу;
  • адрес той веб-страницы, с которой и был осуществлен переход.

2. Передача запрашиваемой страницы в браузер клиента. При этом событии сервер осуществляет передачу запрашиваемых данных (которые могут быть представлены в виде веб-страницы, файла, куки и т.д.) на компьютер клиента, точнее, в браузер, с помощью которого было вызвано предыдущее событие.

3. Осуществление записи в лог-файл. При этом сервер осуществляет запись всей полученной информации в файл лога, который еще называют журналом событий.

Данные в лог-файле представляют из себя довольно непонятную информацию для неподготовленного новичка, но для системных администраторов это вполне понятный и осмысленный текст, который может служить основанием для проведения каких-либо действий или даже уголовного преследования клиента (конечно, в случае, если доступ к ресурсу был неправомерным, например, хакерским взломом, повлекшим за собой увод с сервера хранящейся там базы данных с данными банковских карт клиентов компании).

Но при анализе файлов журнала событий (лог -файлов) системным и сетевым администраторам следует учитывать, что полученные данные все же не являются на 100% реальными, отклонение в них обычно составляет 5-10% в силу различных технических и технологических особенностей используемого оборудования и его настроек. Однако если нагрузка на сайт является более-менее постоянной (иначе говоря, администрация не проводит каких-либо активных рекламных кампаний по привлечению посетителей, вследствие чего посещаемость сайта увеличивается на порядки), то полученные при передаче значения ошибок можно считать более-менее постоянными и становится возможным осуществление сравнение статистики за прошедшие периоды.

Конечно, можно читать и анализировать и сами логи , но это довольно неудобно и весьма трудоемко. Для получения сводных отчетов и статистики по лог-файлам используется специальное программное обеспечение, которое называется «Анализаторы лог-файлов». Наиболее популярными и известными являются следующие программные продукты: Analog, Webalizer, Webtrends, NetPromoter, WebAnalizer, Loganalyzer.

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

Как мы видим, логи являются весьма мощным средством для анализа деятельности посетителей на сервере.

Надеемся, что приведенная в статье информация оказалась Вам хоть сколько-нибудь полезной.

SHARE

TWEET

Untitled

A guest Jan 16th, 2017 335 Never

    Что такое лог игры?=

    ""Log (лог)"" – это файл в котором содержится подробный список событий из приложений, производительности системы, или действий пользователей, в хронологическом порядке. Лог или логи могут быть полезны для выявления ошибок в игре. Логи Танков X хранятся в специальном файле под названием "output_log". Чтобы посмотреть лог, нужно зайти в папку игры, далее в папку "tankix_Data".

    Как предоставить лог игры?=

    Если у Вас возникли какие-то проблемы с игрой, частые вылеты, лаги и так далее, то разработчики могут попросить Вас предоставить им логи игры. Как это сделать:

    *В папке с игрой tankix_data есть файл output_log.txt

    *Сохраните файл в любое облачное хранилище (Яндекс.Диск, Google Docs, Dropbox, где можно просмотреть файл, не скачивая его). Либо можно скопировать содержимое файла и выложить его на ресурсе http://сайт/

    *Создайте новую тему на сайте http://echo.tankix.com/ (или добавьте свой лог в тему другого игрока с идентичной проблемой) вместе с подробным описанием проблемы.

    Главное, после проявления ошибки не перезапускать клиент, иначе логи будут стёрты.

RAW Paste Data

Что такое лог игры?= ""Log (лог)"" - это файл в котором содержится подробный список событий из приложений, производительности системы, или действий пользователей, в хронологическом порядке. Лог или логи могут быть полезны для выявления ошибок в игре. Логи Танков X хранятся в специальном файле под названием "output_log". Чтобы посмотреть лог, нужно зайти в папку игры, далее в папку "tankix_Data". =Как предоставить лог игры?= Если у Вас возникли какие-то проблемы с игрой, частые вылеты, лаги и так далее, то разработчики могут попросить Вас предоставить им логи игры. Как это сделать: *В папке с игрой tankix_data есть файл output_log.txt *Сохраните файл в любое облачное хранилище (Яндекс.Диск, Google Docs, Dropbox, где можно просмотреть файл, не скачивая его)..tankix.com/ (или добавьте свой лог в тему другого игрока с идентичной проблемой) вместе с подробным описанием проблемы. Главное, после проявления ошибки не перезапускать клиент, иначе логи будут стёрты.

Понятие

Логи сервера (лог-файлы, журнал сервера) - фалы, хранящиеся на сервере, которые содержат системную информацию сервера, а так-же протоколирующие все возможные данные о посетителе веб-ресурса.

Логи используются системными администраторами для анализа посетителей , изучения закономерности поведения определенных групп пользователей, а так-же получения различной информации о них, такой как: используемый браузер, IP адрес, данные о географическом положение клиента и многое другое. По мимо анализа, таким образом можно узнать о несанкционированных доступах к сайту, точнее узнать, кем именно он был произведен, и передать данные о данном случае в соответствующие органы.

Данные в лог-файле, в чистом виде, будут не понятным рядовым пользователям, которые увидят во всем этом всего-лишь набор символов в непонятном порядке. Но для системных администраторов и веб-разработчиков, это является вполне читабельным текстом, и довольно полезной информацией.


Последовательность событий

При каждом обращении клиента к веб-ресурсeсе, срабатывают сразу несколько событий, о последовательности которых мы и поговорим.

1. Осуществление запроса страницы. При вводе адреса в браузерную строку, либо при переходе по активный веб-ссылке, допустим, со страницы поисковой выдачи, браузер осуществляет поиск и соединение с сервером, на котором расположена страницы, и осуществляет ее запрос. При этом, он передает серверу такую информацию:
- IP-адрес компьютера клиента, который запрашивает страницу (в случае использования прокси-сервера, IP адрес вашего прокси);
- адрес запрашиваемой пользователем интернет-страницы (IP-адрес);
- точное время и дата, когда был осуществлен запрос;
- данные о фактическом местонахождении клиента (в случае если используется прокси-сервер, то фактический адрес прокси);
- информация об используемом клиентом браузере (название, версия и т.д.);
- данные о веб-страницы, с которой был осуществлен переход клиента.

2. Передача запрашиваемых данных. Происходит передача запрашиваемых данных (интернет-страница, файлы, cooki, и др.) от сервера на компьютер пользователя.

3. Запись в журнал сервера. После всего, происходит запись в журнал, в котором указываются все данные, которые фигурировали в прошлых двух событиях. Это вся информация отправленная в первом пункте, а так-же информация о переданных данных.

Как посмотреть логи сервера

Лог-файлы, хранятся в файле access.log не зависимо от того, каким типом веб-сервера вы пользуетесь (Apache, Nginx, прокси-сервером squid и т. д.) Данный файл является текстовым документом, на каждой строчке которого, записывается по одному обращению. Форматов записи в access.log довольно много, но наиболее популярным является combined, при котором, запись имеет следующий вид и последовательность:

Код: %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"
Где:

%h - хост/IP-адрес, с которого произведён запрос;
%t - время запроса к серверу и часовой пояс сервера;
%r - версия, содержимое и тип запроса;
%s - код состояния HTTP;
%b - количество отданных сервером байт;
%{Referer} - URL-источник запроса;
%{User-Agent} - HTTP-заголовок, с информацией о запросе (клиентское приложение, язык и т.д.);
%{Host} - имя Virtual Host, к которому идет обращение.

в готовом виде данная строка имеет примерно следующий вид:

127.0.0.1 - - "GET /index.php HTTP/1..0 (compatible; MSIE 7.0; Windows NT 5.1)"

На чтение логов в ручную, уйдет довольно много времени и сил. Поэтому, опытные веб-мастера используют специальное программное обеспечение, которые называют «Анализаторы лог-файлов». Они анализируют все данные, которые довольно сложны к прочтению человеком, и выдают структурированные данные. Это такие программы как: Analog, WebAnalizer, Webalizer, Awstats, Webtrends, и т.д. Видов специального программного обеспечения довольно много, среди них есть как платные программы, так и бесплатные. Поэтому я уверен, что каждый найдет себе что-то по душе.

Где найти логи сайта

Если у вас обычный хостинг, то скорей всего вам придется написать своему хостеру и запросить у него логи. Так-же, довольно часто, вы можете запросить их через панель хостера. У разных хостеров - по разному. Для примера, что бы запросить у моего хостера, достаточно сделать один клик на главной странице панели:


Если у вас есть доступ к системным папкам сервера, то вы можете найти логи по адресу /etc/httpd/logs/access_log в 99 случаях из 100.

Журнал ошибок error.log

Error.log - файл, в котором так-же ведутся логи. Но не посетителей, а возникших на сервере ошибок. Как и в случае с access.log , каждая строка файла - отвечает за одну возникшую ошибку. Запись ведется с учетом такой информации, как: точная дата и время возникновения ошибки, IP-адрес которому была выдана ошибка, тип ошибки, а так-же причина ее возникновения.

Заключение

Логи являются довольно мощным и информативным инструментом, с которыми необходимо работать. Но в наше время, их заменяют такие инструменты, как Яндекс.Метрика, Google Analytics и т.д., тем самым упрощая нам жизнь. Однако, если вы планируете развиваться, расти и познавать что-то новое, несомненно рекомендую вам познакомиться с данной темой поближе.