Что такое сообщения об ошибках log.txt?
Общие ошибки выполнения log.txt
Ошибки файла log.txt часто возникают на этапе запуска OpenOffice.org Portable, но также могут возникать во время работы программы.
Эти типы ошибок TXT также известны как «ошибки выполнения», поскольку они возникают во время выполнения OpenOffice.org Portable. К числу наиболее распространенных ошибок выполнения log.txt относятся:
- Не удается найти log.txt.
- log.txt — ошибка.
- Не удалось загрузить log.txt.
- Ошибка при загрузке log.txt.
- Не удалось зарегистрировать log.txt / Не удается зарегистрировать log.txt.
- Ошибка выполнения — log.txt.
- Файл log.txt отсутствует или поврежден.
Библиотека времени выполнения Microsoft Visual C++
Ошибка выполнения!
Программа: C:OpenOfficePortableDatasettingsuseruno_packagescachelog.txt
Среда выполнения получила запрос от этого приложения, чтобы прекратить его необычным способом.
Для получения дополнительной информации обратитесь в службу поддержки приложения.
В большинстве случаев причинами ошибок в TXT являются отсутствующие или поврежденные файлы. Файл log.txt может отсутствовать из-за случайного удаления, быть удаленным другой программой как общий файл (общий с OpenOffice.org Portable) или быть удаленным в результате заражения вредоносным программным обеспечением. Кроме того, повреждение файла log.txt может быть вызвано отключением питания при загрузке OpenOffice.org Portable, сбоем системы при загрузке или сохранении log.txt, наличием плохих секторов на запоминающем устройстве (обычно это основной жесткий диск) или заражением вредоносным программным обеспечением. Таким образом, крайне важно, чтобы антивирус постоянно поддерживался в актуальном состоянии и регулярно проводил сканирование системы.
Как исправить ошибки log.txt — 3-шаговое руководство (время выполнения: ~5-15 мин.)
Если вы столкнулись с одним из вышеуказанных сообщений об ошибке, выполните следующие действия по устранению неполадок, чтобы решить проблему log.txt. Эти шаги по устранению неполадок перечислены в рекомендуемом порядке выполнения.
Шаг 1. Восстановите компьютер до последней точки восстановления, «моментального снимка» или образа резервной копии, которые предшествуют появлению ошибки.
Чтобы начать восстановление системы (Windows XP, Vista, 7, 8 и 10):
- Нажмите кнопку «Пуск» в Windows
- В поле поиска введите «Восстановление системы» и нажмите ENTER.
- В результатах поиска найдите и нажмите «Восстановление системы»
- Введите пароль администратора (при необходимости).
- Следуйте инструкциям мастера восстановления системы, чтобы выбрать соответствующую точку восстановления.
- Восстановите компьютер к этому образу резервной копии.
Если на этапе 1 не удается устранить ошибку log.txt, перейдите к шагу 2 ниже.
Шаг 2. Если вы недавно установили приложение OpenOffice.org Portable (или схожее программное обеспечение), удалите его, затем попробуйте переустановить OpenOffice.org Portable.
Чтобы удалить программное обеспечение OpenOffice.org Portable, выполните следующие инструкции (Windows XP, Vista, 7, 8 и 10):
- Нажмите кнопку «Пуск» в Windows
- В поле поиска введите «Удалить» и нажмите ENTER.
- В результатах поиска найдите и нажмите «Установка и удаление программ»
- Найдите запись для OpenOffice.org Portable 3.2 и нажмите «Удалить»
- Следуйте указаниям по удалению.
После полного удаления приложения следует перезагрузить ПК и заново установить OpenOffice.org Portable.
Если на этапе 2 также не удается устранить ошибку log.txt, перейдите к шагу 3 ниже.
OpenOffice.org Portable 3.2
PortableApps
Шаг 3. Выполните обновление Windows.
Когда первые два шага не устранили проблему, целесообразно запустить Центр обновления Windows. Во многих случаях возникновение сообщений об ошибках log.txt может быть вызвано устаревшей операционной системой Windows. Чтобы запустить Центр обновления Windows, выполните следующие простые шаги:
- Нажмите кнопку «Пуск» в Windows
- В поле поиска введите «Обновить» и нажмите ENTER.
- В диалоговом окне Центра обновления Windows нажмите «Проверить наличие обновлений» (или аналогичную кнопку в зависимости от версии Windows)
- Если обновления доступны для загрузки, нажмите «Установить обновления».
- После завершения обновления следует перезагрузить ПК.
Если Центр обновления Windows не смог устранить сообщение об ошибке log.txt, перейдите к следующему шагу. Обратите внимание, что этот последний шаг рекомендуется только для продвинутых пользователей ПК.
Если эти шаги не принесут результата: скачайте и замените файл log.txt (внимание: для опытных пользователей)
Если ни один из предыдущих трех шагов по устранению неполадок не разрешил проблему, можно попробовать более агрессивный подход (примечание: не рекомендуется пользователям ПК начального уровня), загрузив и заменив соответствующую версию файла log.txt. Мы храним полную базу данных файлов log.txt со 100%-ной гарантией отсутствия вредоносного программного обеспечения для любой применимой версии OpenOffice.org Portable . Чтобы загрузить и правильно заменить файл, выполните следующие действия:
- Найдите версию операционной системы Windows в нижеприведенном списке «Загрузить файлы log.txt».
- Нажмите соответствующую кнопку «Скачать», чтобы скачать версию файла Windows.
- Скопируйте этот файл в соответствующее расположение папки OpenOffice.org Portable:
Windows 10: C:ProgramDatainFlow InventoryLogs
Windows 10: C:ProgramDataNapsterbin
Windows 10: C:Program Files (x86)ZapakCrazyKart
Windows 10: C:UsersTesterAppDataLocalVirtualStoreProgram Files (x86)UbisoftCrytekFar Cry Demo 2
Windows 10: C:OpenOfficePortableDatasettingsuseruno_packagescache
Показать на 6 каталогов больше +Windows 10: C:Program FilesMiniTool Partition Wizard 11
Windows 10: C:Program FilesVDownloader
Windows 10: C:UsersTesterAppDataRoamingMiniLyrics
Windows 10: C:Program FilesMiniToolPowerDataRecovery
Windows 10: C:UsersTesterAppDataRoamingn-Track Studio 7
Windows 10: C:UsersTesterAppDataRoamingDAZ 3DStudio4 - Перезагрузите компьютер.
Если этот последний шаг оказался безрезультативным и ошибка по-прежнему не устранена, единственно возможным вариантом остается выполнение чистой установки Windows 10.
СОВЕТ ОТ СПЕЦИАЛИСТА: Мы должны подчеркнуть, что переустановка Windows является достаточно длительной и сложной задачей для решения проблем, связанных с log.txt. Во избежание потери данных следует убедиться, что перед началом процесса вы создали резервные копии всех важных документов, изображений, установщиков программного обеспечения и других персональных данных. Если вы в настоящее время не создаете резервных копий своих данных, вам необходимо сделать это немедленно.
Скачать файлы log.txt (проверено на наличие вредоносного ПО — отсутствие 100 %)
ВНИМАНИЕ! Мы настоятельно не рекомендуем загружать и копировать log.txt в соответствующий системный каталог Windows. PortableApps, как правило, не выпускает файлы OpenOffice.org Portable TXT для загрузки, поскольку они входят в состав установщика программного обеспечения. Задача установщика заключается в том, чтобы обеспечить выполнение всех надлежащих проверок перед установкой и размещением log.txt и всех других файлов TXT для OpenOffice.org Portable. Неправильно установленный файл TXT может нарушить стабильность работы системы и привести к тому, что программа или операционная система полностью перестанут работать. Действовать с осторожностью.
Файлы, относящиеся к log.txt
Файлы TXT, относящиеся к log.txt
Имя файла | Описание | Программа (версия) | Размер файла (байты) | Расположение файла |
---|---|---|---|---|
affDescription.txt | Plain Text | OpenOffice.org Portable 3.2 | 5221 | C:OpenOfficePortableAppopenofficeshareuno_… |
LICENSE.txt | Plain Text | OpenOffice.org Portable 3.2 | 18322 | C:OpenOfficePortableOtherSource |
test_doctest3.txt | Plain Text | OpenOffice.org Portable 3.2 | 81 | C:OpenOfficePortableAppopenofficeBasisprog… |
test_doctest4.txt | Plain Text | OpenOffice.org Portable 3.2 | 314 | C:OpenOfficePortableAppopenofficeBasisprog… |
Grammar.txt | Plain Text | OpenOffice.org Portable 3.2 | 6331 | C:OpenOfficePortableAppopenofficeBasisprog… |
Другие файлы, связанные с log.txt
Имя файла | Описание | Программа (версия) | Размер файла (байты) | Расположение файла |
---|---|---|---|---|
CBS.log | Log | OpenOffice.org Portable 3.2 | 977868 | C:WindowsLogsCBS |
setuperr.log | Log | OpenOffice.org Portable 3.2 | 10628 | C:WindowsLogsDPX |
setupact.log | Log | OpenOffice.org Portable 3.2 | 194961 | C:WindowsLogsDPX |
WmiApRpl.h | C/C++/Objective-C Header | OpenOffice.org Portable 3.2 | 3444 | C:WindowsSystem32wbemPerformance |
api-ms-win-core-profil… | ApiSet Stub DLL | Microsoft® Windows® Operating System (10.0.17134.12) | 10600 | C:UsersTesterAppDataLocalMicrosoftOneDriv… |
Вы скачиваете пробное программное обеспечение. Для разблокировки всех функций программного обеспечения требуется покупка годичной подписки, стоимость которой оставляет 39,95 долл. США. Подписка автоматически возобновляется в конце срока (Подробнее). Нажимая кнопку «Начать загрузку» и устанавливая «Программное обеспечение», я подтверждаю, что я прочитал (-а) и принимаю Лицензионное соглашение и Политику конфиденциальности компании Solvusoft.
Пора поговорить про удобную работу с логами, тем более что в Windows есть масса неочевидных инструментов для этого. Например, Log Parser, который порой просто незаменим.
В статье не будет про серьезные вещи вроде Splunk и ELK (Elasticsearch + Logstash + Kibana). Сфокусируемся на простом и бесплатном.
Журналы и командная строка
До появления PowerShell можно было использовать такие утилиты cmd как find и findstr. Они вполне подходят для простой автоматизации. Например, когда мне понадобилось отлавливать ошибки в обмене 1С 7.7 я использовал в скриптах обмена простую команду:
findstr "Fail" *.log >> fail.txt
Она позволяла получить в файле fail.txt все ошибки обмена. Но если было нужно что-то большее, вроде получения информации о предшествующей ошибке, то приходилось создавать монструозные скрипты с циклами for или использовать сторонние утилиты. По счастью, с появлением PowerShell эти проблемы ушли в прошлое.
Основным инструментом для работы с текстовыми журналами является командлет Get-Content, предназначенный для отображения содержимого текстового файла. Например, для вывода журнала сервиса WSUS в консоль можно использовать команду:
Get-Content -Path 'C:Program FilesUpdate ServicesLogFilesSoftwareDistribution.log' | Out-Host -Paging
Для вывода последних строк журнала существует параметр Tail, который в паре с параметром Wait позволит смотреть за журналом в режиме онлайн. Посмотрим, как идет обновление системы командой:
>Get-Content -Path "C:WindowsWindowsUpdate.log" -Tail 5 -Wait
Смотрим за ходом обновления Windows.
Если же нам нужно отловить в журналах определенные события, то поможет командлет Select-String, который позволяет отобразить только строки, подходящие под маску поиска. Посмотрим на последние блокировки Windows Firewall:
Select-String -Path "C:WindowsSystem32LogFilesFirewallpfirewall.log" -Pattern 'Drop' | Select-Object -Last 20 | Format-Table Line
Смотрим, кто пытается пролезть на наш дедик.
При необходимости посмотреть в журнале строки перед и после нужной, можно использовать параметр Context. Например, для вывода трех строк после и трех строк перед ошибкой можно использовать команду:
Select-String 'C:WindowsClusterReportsCluster.log' -Pattern ' err ' ‑Context 3
Оба полезных командлета можно объединить. Например, для вывода строк с 45 по 75 из netlogon.log поможет команда:
Get-Content 'C:Windowsdebugnetlogon.log' | Select-Object -First 30 -Skip 45
Журналы системы ведутся в формате .evtx, и для работы с ними существуют отдельные командлеты. Для работы с классическими журналами («Приложение», «Система», и т.д.) используется Get-Eventlog. Этот командлет удобен, но не позволяет работать с остальными журналами приложений и служб. Для работы с любыми журналами, включая классические, существует более универсальный вариант ― Get-WinEvent. Остановимся на нем подробнее.
Для получения списка доступных системных журналов можно выполнить следующую команду:
Get-WinEvent -ListLog *
Вывод доступных журналов и информации о них.
Для просмотра какого-то конкретного журнала нужно лишь добавить его имя. Для примера получим последние 20 записей из журнала System командой:
Get-WinEvent -LogName 'System' -MaxEvents 20
Последние записи в журнале System.
Для получения определенных событий удобнее всего использовать хэш-таблицы. Подробнее о работе с хэш-таблицами в PowerShell можно прочитать в материале Technet about_Hash_Tables.
Для примера получим все события из журнала System с кодом события 1 и 6013.
Get-WinEvent -FilterHashTable @{LogName='System';ID='1','6013'}
В случае если надо получить события определенного типа ― предупреждения или ошибки, ― нужно использовать фильтр по важности (Level). Возможны следующие значения:
- 0 ― всегда записывать;
- 1 ― критический;
- 2 ― ошибка;
- 3 ― предупреждение;
- 4 ― информация;
- 5 ― подробный (Verbose).
Собрать хэш-таблицу с несколькими значениями важности одной командой так просто не получится. Если мы хотим получить ошибки и предупреждения из системного журнала, можно воспользоваться дополнительной фильтрацией при помощи Where-Object:
Get-WinEvent -FilterHashtable @{LogName='system'} | Where-Object -FilterScript {($_.Level -eq 2) -or ($_.Level -eq 3)}
Ошибки и предупреждения журнала System.
Аналогичным образом можно собирать таблицу, фильтруя непосредственно по тексту события и по времени.
Подробнее почитать про работу обоих командлетов для работы с системными журналами можно в документации PowerShell:
- Get-EventLog.
- Get-WinEvent.
PowerShell ― механизм удобный и гибкий, но требует знания синтаксиса и для сложных условий и обработки большого количества файлов потребует написания полноценных скриптов. Но есть вариант обойтись всего-лишь SQL-запросами при помощи замечательного Log Parser.
Работаем с журналами посредством запросов SQL
Утилита Log Parser появилась на свет в начале «нулевых» и с тех пор успела обзавестись официальной графической оболочкой. Тем не менее актуальности своей она не потеряла и до сих пор остается для меня одним из самых любимых инструментов для анализа логов. Загрузить утилиту можно в Центре Загрузок Microsoft, графический интерфейс к ней ― в галерее Technet. О графическом интерфейсе чуть позже, начнем с самой утилиты.
О возможностях Log Parser уже рассказывалось в материале «LogParser — привычный взгляд на непривычные вещи», поэтому я начну с конкретных примеров.
Для начала разберемся с текстовыми файлами ― например, получим список подключений по RDP, заблокированных нашим фаерволом. Для получения такой информации вполне подойдет следующий SQL-запрос:
SELECT
extract_token(text, 0, ' ') as date,
extract_token(text, 1, ' ') as time,
extract_token(text, 2, ' ') as action,
extract_token(text, 4, ' ') as src-ip,
extract_token(text, 7, ' ') as port
FROM 'C:WindowsSystem32LogFilesFirewallpfirewall.log'
WHERE action='DROP' AND port='3389'
ORDER BY date,time DESC
Посмотрим на результат:
Смотрим журнал Windows Firewall.
Разумеется, с полученной таблицей можно делать все что угодно ― сортировать, группировать. Насколько хватит фантазии и знания SQL.
Log Parser также прекрасно работает с множеством других источников. Например, посмотрим откуда пользователи подключались к нашему серверу по RDP.
Работать будем с журналом TerminalServices-LocalSessionManagerOperational.
Не со всеми журналами Log Parser работает просто так ― к некоторым он не может получить доступ. В нашем случае просто скопируем журнал из %SystemRoot%System32WinevtLogsMicrosoft-Windows-TerminalServices-LocalSessionManager%4Operational.evtx в %temp%test.evtx.
Данные будем получать таким запросом:
SELECT
timegenerated as Date,
extract_token(strings, 0, '|') as user,
extract_token(strings, 2, '|') as sourceip
FROM '%temp%test.evtx'
WHERE EventID = 21
ORDER BY Date DESC
Смотрим, кто и когда подключался к нашему серверу терминалов.
Особенно удобно использовать Log Parser для работы с большим количеством файлов журналов ― например, в IIS или Exchange. Благодаря возможностям SQL можно получать самую разную аналитическую информацию, вплоть до статистики версий IOS и Android, которые подключаются к вашему серверу.
В качестве примера посмотрим статистику количества писем по дням таким запросом:
SELECT
TO_LOCALTIME(TO_TIMESTAMP(EXTRACT_PREFIX(TO_STRING([#Fields: date-time]),0,'T'), 'yyyy-MM-dd')) AS Date,
COUNT(*) AS [Daily Email Traffic]
FROM 'C:Program FilesMicrosoftExchange ServerV15TransportRolesLogsMessageTracking*.LOG'
WHERE (event-id='RECEIVE') GROUP BY Date ORDER BY Date ASC
Если в системе установлены Office Web Components, загрузить которые можно в Центре загрузки Microsoft, то на выходе можно получить красивую диаграмму.
Выполняем запрос и открываем получившуюся картинку…
Любуемся результатом.
Следует отметить, что после установки Log Parser в системе регистрируется COM-компонент MSUtil.LogQuery. Он позволяет делать запросы к движку утилиты не только через вызов LogParser.exe, но и при помощи любого другого привычного языка. В качестве примера приведу простой скрипт PowerShell, который выведет 20 наиболее объемных файлов на диске С.
$LogQuery = New-Object -ComObject "MSUtil.LogQuery"
$InputFormat = New-Object -ComObject "MSUtil.LogQuery.FileSystemInputFormat"
$InputFormat.Recurse = -1
$OutputFormat = New-Object -ComObject "MSUtil.LogQuery.CSVOutputFormat"
$SQLQuery = "SELECT Top 20 Path, Size INTO '%temp%output.csv' FROM 'C:*.*' ORDER BY Size DESC"
$LogQuery.ExecuteBatch($SQLQuery, $InputFormat, $OutputFormat)
$CSV = Import-Csv $env:TEMP'output.csv'
$CSV | fl
Remove-Item $env:TEMP'output.csv'
$LogQuery=$null
$InputFormat=$null
$OutputFormat=$null
Ознакомиться с документацией о работе компонента можно в материале Log Parser COM API Overview на портале SystemManager.ru.
Благодаря этой возможности для облегчения работы существует несколько утилит, представляющих из себя графическую оболочку для Log Parser. Платные рассматривать не буду, а вот бесплатную Log Parser Studio покажу.
Интерфейс Log Parser Studio.
Основной особенностью здесь является библиотека, которая позволяет держать все запросы в одном месте, без россыпи по папкам. Также сходу представлено множество готовых примеров, которые помогут разобраться с запросами.
Вторая особенность ― возможность экспорта запроса в скрипт PowerShell.
В качестве примера посмотрим, как будет работать выборка ящиков, отправляющих больше всего писем:
Выборка наиболее активных ящиков.
При этом можно выбрать куда больше типов журналов. Например, в «чистом» Log Parser существуют ограничения по типам входных данных, и отдельного типа для Exchange нет ― нужно самостоятельно вводить описания полей и пропуск заголовков. В Log Parser Studio нужные форматы уже готовы к использованию.
Помимо Log Parser, с логами можно работать и при помощи возможностей MS Excel, которые упоминались в материале «Excel вместо PowerShell». Но максимального удобства можно достичь, подготавливая первичный материал при помощи Log Parser с последующей обработкой его через Power Query в Excel.
Приходилось ли вам использовать какие-либо инструменты для перелопачивания логов? Поделитесь в комментариях.
1 / 1 / 1 Регистрация: 04.03.2012 Сообщений: 101 |
|
1 |
|
анализ лог файла03.05.2012, 18:25. Показов 3417. Ответов 8
Здравствуйте! Недавно решил посвящать свое свободное время веб программированию. Увлеченно учу html css javascript. Пару дней назад начал изучение php. Через некоторое время нужно сдавать лабораторную работу по обработке лог файла. Слышал что на php это решается легче всего. Буду рад, если кто-нибудь откликнется, от себя обязуюсь что не заброшу изучение сего языка. Дата Запросы Всего было сделано (запросов) — 1679 Сортировка запросов: Бухгалтерский учет — 25 Пример файла отчета работы программы wslog.txt Вставил кусок лог файла, в оригинале он намного больше (400кб)
0 |
shafl |
03.05.2012, 19:09
|
Не по теме: приложите весь лог, прошу в личных целях
0 |
1 / 1 / 1 Регистрация: 04.03.2012 Сообщений: 101 |
|
03.05.2012, 19:51 [ТС] |
3 |
Не по теме: приложите весь лог, прошу в личных целях Сделано.
0 |
almostclever 1 / 1 / 1 Регистрация: 04.03.2012 Сообщений: 101 |
||||
05.05.2012, 10:59 [ТС] |
4 |
|||
Так, кое-что получилось сделать.
Пока подсчитал общее количество запросов и просто вывел даты этих запросов. Нужно: для каждой даты вывести количество запросов. Пока не могут придумать как сделать. Прошу помощи. Добавлено через 23 минуты 25.02.2002 25.02.2002 25.02.2002 26.02.2002 26.02.2002 26.02.2002 26.02.2002 26.02.2002 25.02.2002 — 3
0 |
258 / 147 / 37 Регистрация: 24.01.2011 Сообщений: 427 |
|
05.05.2012, 11:20 |
5 |
считывайте всё в массив построчно с помощью file() и работайте с массивом.
0 |
almostclever 1 / 1 / 1 Регистрация: 04.03.2012 Сообщений: 101 |
||||
05.05.2012, 12:15 [ТС] |
6 |
|||
Сделал так:
Все работает. Добавлено через 4 минуты
0 |
258 / 147 / 37 Регистрация: 24.01.2011 Сообщений: 427 |
|
05.05.2012, 12:28 |
7 |
я бы рекомендовал регулярными выражениями парсить
0 |
almostclever 1 / 1 / 1 Регистрация: 04.03.2012 Сообщений: 101 |
||||||||
05.05.2012, 14:37 [ТС] |
8 |
|||||||
1 проблема: выдает ошибку Undefined variable: kind в 47 строке, появилась внезапно, после перезагрузки сервера (wampserver), до этого не было. 2 проблема: косячит с подсчетом Бухгалтерского учета (пишет больше чем есть на самом деле) 3 проблема: почемуто не удаляет первый символ при сортировке с помощью unset , хотя с датами все нормально удалялось.
Содержимое лог-файла:
Миниатюры
0 |
almostclever 1 / 1 / 1 Регистрация: 04.03.2012 Сообщений: 101 |
||||||||
05.05.2012, 19:25 [ТС] |
9 |
|||||||
Разобрался со всем, кроме: когда за забросом идет пустой заброс, этот запрос почему-то считается предыдущим запросом. На примере:
первые 4 запроса обработаются как надо, а 5 посчитается за (K=бухгалтерск$)*(K=учет$). Не могу понять в чем дело. Вот кусок кода, отвечающий за это:
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
05.05.2012, 19:25 |
Помогаю со студенческими работами здесь Анализ лог файлов Необходимо загнать информацию из лог файла в ListView. Но я пока полностью не… Анализ лог файлов на C# Запись лог файла Ошибки лог-файла 1. File does not exist:… Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 9 |
Логирование — это процесс записи потока кода при его выполнении наряду с записью любых других событий. Запись происходит в файлы, которые впоследствии можно использовать для анализа и устранения возникающих неполадок.
Логирование помогает:
- В отладке кода для определения потока исходного кода во время разработки и после развертывания.
- Оповещении об исключительном событии, вызванном кодом. Например, нехватке памяти и т. д.
- Поиске пользователей или систем, обращающихся к коду.
- Что должно записываться в логи?
- Как реализовать логирование в Python?
- Как вывести сообщения для уровней сложности Debug и Info?
- Параметры, принимаемые basicConfig()
- Запись сообщения лога в файл log.txt в режиме добавления с уровнем сложности DEBUG
- Запись отформатированного лога в файл log.txt в режиме добавления с уровнем сложности DEBUG
- Регистрация сообщений в классах и функциях
- Логирование трассировки стека
- Заключение
Логи должны содержать сообщение, в котором указывается:
- Информация о доступе: пользователи и устройства, имеющие доступ к коду.
- Версия кода: текущая редакция приложения.
- Отметка времени: отметки времени всех ключевых событий.
- Результаты: результаты переменных, вычисленных в коде.
- Исключения, возникающие вместе с трассировкой стека.
- Поток кода: различные классы и функции, вызываемые во время выполнения кода.
Python предоставляет библиотеку «logging» для записи сообщений в файл или любой другой поток вывода.
Различные уровни логирования в порядке их сложности:
- DEBUG: используется только при диагностике проблем.
- INFO: только для информации, используемой для понимания потока кода при диагностике проблемы.
- WARNING: когда возникает непредвиденная ситуация, но код все еще выполняется.
- ERROR: когда код не может выполнять какую-либо функцию.
- CRITICAL: серьезная ошибка, когда программа не может продолжить работ.
Простой код реализации логирования различных вариантов сложности:
import logging logging.debug('This is a debug message') logging.info('This is an info message') logging.warning('This is a warning message') logging.error('This is an error message') logging.critical('This is a critical message')
Вывод в консоль
Мы логируем структуру сообщений уровня WARNING, за которым следует корневой модуль логирования по умолчанию и сообщение. При этом отладочные и информационные сообщения не отображаются. Модуль регистрации по умолчанию отображает только сообщения с уровнем сложности WARNING и выше.
Мы используем метод basicConfig(), чтобы установить базовую конфигурацию для системы логирования.
import logginglogging.basicConfig(level=logging.debug)logging.debug('This is a debug message') logging.info('This is an info message') logging.warning('This is a warning message') logging.error('This is an error message') logging.critical('This is a critical message')
Вывод в консоль
Метод basicConfig() не будет учитывать новые настройки, если корневой регистратор уже настроен. Мне пришлось перезапустить ядро, чтобы приведенный выше код работал правильно. Так как при первом вызове любой из функций она настраивает корневой регистратор внутри системы.
filename: имя файла, в который нужно записать сообщение.
filemode: режим, в котором файл должен быть открыт. Например, «w» для записи, «a» — для добавления. Режим файла по умолчанию — «а».
format: строка формата, доступную в качестве атрибутов в LogRecord.
datefmt: формат даты, отображаемой в сообщениях лога. Формат должен быть передан time.strftime().
level: уровень сложности для корневого регистратора.
import logging logging.basicConfig(filename='log.txt', filemode='a', level=logging.DEBUG)logging.debug('This is a debug message') logging.info('This is an info message') logging.warning('This is a warning message') logging.error('This is an error message') logging.critical('This is a critical message')
Файл log.txt с сообщениями лога
import logging logging.basicConfig(filename='log.txt', filemode='a', format='%(asctime)s %(msecs)d- %(process)d -%(levelname)s - %(message)s', datefmt='%d-%b-%y %H:%M:%S %p' , level=logging.DEBUG)logging.debug('This is a debug message') logging.info('This is an info message') logging.warning('This is a warning message') logging.error('This is an error message') logging.critical('This is a critical message')
Файл лога log.txt с отформатированными сообщениями лога
Приведенный ниже фрагмент кода демонстрирует логирование в классах и функциях.
Мы создаем класс TestLog с divide(). Он принимает два параметра и возвращает результат деления. В случае ошибки в делении мы хотим иметь трассировку стека в файле лога.
import logging class TestLog: def __init__(self): logging.info('init method') def divide(self, x, y): try: logging.info(" Dividing...") return x/y except Exception as e: logging.error(" Error in divide", exc_info=True)
Создание экземпляра класса TestLog и вызов divide().
import logginglogging.basicConfig(filename='app.txt', filemode='a',level=logging.DEBUG, format='%(asctime)s %(msecs)d- %(process)d-%(levelname)s - %(message)s')logging.info('Started') x=10 y=2 t= TestLog() num_1= t.divide(x,y)logging.info(" Result of dividing %d by %d is %d", x, y,num_1)
Сообщение лога в app.txt
Для отображения трассировки стека нужно установить для exc_info значение true в блокеexcept обработки исключений.
logging.info('Started') x=10 y=0 t= TestLog() num_1= t.divide(x,y) logging.info(" Result of dividing %d by %d is %d", x, y,num_1)
Трассировки стека
Логирование помогает в устранении неполадок приложения во время разработки или после развертывания. Логирование может быть реализовано через запись в файлы, стандартного вывода или записи трассировки стека.
В процессе жизнедеятельности сайт и сервер оставляют после себя различные записи в лог-файлах. Данные из этих файлов желательно периодически разгребать и анализировать, что бы сайт работал быстро и бесперебойно
Для Битрикс окружения на CentOS пути к логам обычно будут такими (зависит от настроек):
- Битрикс: __bx_log.log или log.txt в корне сайта. Зависит от переменной LOG_FILENAME в файле /bitrix/php_interface/dbconn.php
- Apache: /var/log/httpd/error_log
- Nginx: /var/log/nginx/error.log
- PHP: /var/log/php/exceptions.log
- Почта: /home/bitrix/msmtp_default.log
- bash, cron: /var/spool/mail/root и /var/spool/mail/bitrix
Как часто надо проверять? Раз в неделю стоит поглядывать, я думаю. Просто что бы убедиться, что эти файлы пусты и ошибок не было.
И как бонус стоит проверить файл /var/log/btmp командой last -f /var/log/btmp если там очень много попыток авторизации, значит доступ к ssh пытаются «брутфорсить». Стоит изменить порт доступа к ssh (в файле /etc/ssh/sshd_config поменять строку «Port 22» на другое значение и перезагрузить sshd) Что бы сбросить лог авторизации нужно выполнить команду cat /dev/null > /var/log/btmp