Что такое журналирование и зачем оно нужно. Какие бывают типы журналов. Как правильно настроить логирование. Какие инструменты использовать для анализа логов.
Что такое журналирование и зачем оно необходимо
Журналирование (logging) — это процесс записи событий, происходящих в информационной системе, в специальные файлы — журналы (logs). Основные цели ведения журналов:
- Отслеживание работы системы и выявление проблем
- Расследование инцидентов информационной безопасности
- Анализ производительности и оптимизация
- Аудит действий пользователей
Качественно настроенное журналирование позволяет администраторам и разработчикам оперативно выявлять и устранять проблемы, а также анализировать работу системы в долгосрочной перспективе.
Основные типы журналов в информационных системах
В зависимости от назначения выделяют следующие основные типы журналов:
- Системные журналы — записи о работе операционной системы
- Журналы приложений — логи работы программного обеспечения
- Журналы безопасности — записи о событиях безопасности
- Журналы транзакций — логи операций с данными
- Журналы доступа — фиксация обращений к ресурсам
Каждый тип журнала содержит специфичную информацию и используется для решения определенных задач. Комплексный анализ разных типов логов позволяет получить полную картину происходящего в системе.

Ключевые принципы организации журналирования
При настройке системы логирования важно соблюдать следующие принципы:
- Централизованный сбор журналов с разных источников
- Структурированный формат записей для удобного анализа
- Точные метки времени для каждого события
- Ротация и архивирование старых журналов
- Разграничение доступа к журналам
- Защита целостности и конфиденциальности логов
Правильная организация журналирования обеспечивает сохранность важных данных и позволяет эффективно работать с большими объемами логов.
Инструменты для работы с журналами
Для анализа и управления журналами используются различные программные решения:
- Системы централизованного сбора логов (Graylog, ELK Stack)
- Инструменты для просмотра и поиска по журналам (LogViewer, Kibana)
- Средства мониторинга на основе анализа логов (Zabbix, Nagios)
- Решения для оповещений о критических событиях в журналах
Выбор конкретных инструментов зависит от масштабов системы и стоящих задач. Для небольших проектов часто достаточно базовых средств ОС, а крупным компаниям требуются комплексные enterprise-решения.

Настройка ротации журналов
Ротация — процесс архивирования и удаления старых журналов для экономии места на диске. Основные параметры ротации:
- Периодичность (ежедневно, еженедельно и т.д.)
- Максимальный размер файла журнала
- Количество хранимых архивных копий
- Метод сжатия архивов
Правильная настройка ротации позволяет эффективно управлять дисковым пространством, сохраняя при этом историю событий за необходимый период. В Unix-системах для ротации часто используется утилита logrotate.
Анализ журналов для расследования инцидентов
Журналы играют ключевую роль при расследовании инцидентов информационной безопасности. Основные этапы анализа:
- Сбор релевантных журналов с разных источников
- Выделение временного промежутка инцидента
- Поиск аномалий и подозрительных событий
- Корреляция событий из разных журналов
- Реконструкция хронологии инцидента
Для эффективного расследования важно иметь централизованную систему хранения журналов с возможностью быстрого поиска. Это позволяет оперативно выявлять причины инцидентов и принимать меры по их устранению.

Нормативные требования к ведению журналов
Во многих отраслях существуют обязательные требования к журналированию, например:
- PCI DSS — для компаний, работающих с платежными картами
- HIPAA — для медицинских организаций
- SOX — для публичных компаний
- 152-ФЗ — для операторов персональных данных в РФ
Эти стандарты определяют, какие события необходимо фиксировать, как долго хранить журналы, как обеспечивать их защиту. Несоблюдение требований может привести к серьезным штрафам, поэтому важно учитывать нормативные аспекты при настройке журналирования.
Журналирование в микросервисной архитектуре
Микросервисная архитектура создает дополнительные сложности для журналирования:
- Большое количество распределенных компонентов
- Динамическое масштабирование сервисов
- Необходимость трассировки запросов между сервисами
Для решения этих проблем используются специальные подходы:
- Присвоение уникальных идентификаторов каждому запросу
- Централизованный сбор логов со всех сервисов
- Инструменты распределенной трассировки (Jaeger, Zipkin)
- Технологии для работы с большими объемами логов
Правильно настроенное журналирование позволяет эффективно отлаживать и поддерживать сложные микросервисные системы.

View Log | Просмотреть журнал |
View Log | Вы победили! |
Move View Log | Ход Запись журнала |
View Log File | Просмотреть файл журнала |
View installation log | Просмотреть журнал установки |
View Game Log | Переписать |
View Show Log Window | Вид Окно журнала |
View GnuPG Audit Log | Просмотр журнала аудита GnuPG |
View or monitor LADI log files | Средство просмотра и наблюдения за журналами LADI |
The log view line count limit. | Предел количества строк журнала. |
View and log downlink data from Altus Metrum products | Обзор и запись событий, поступающих от продуктов Altus Metrum |
Log! Log! | Бревно сюда. |
Log! Log! | Бревно, скорей. |
Log Butt, Log Butt. | БревноЗад,БревноЗад. |
Log AX Log AY, okay? | Log AX Log AY, ясно? |
Choose here the maximum number of log lines displayed in the main view. | Укажите здесь максимальное количество показанных в главном окне строк журнала. |
Bring up the log! The log! | Бревно сюда, бревно. |
A log is only a log. | Бревно оно и есть бревно. |
(Log) | (Логарифм) |
Log | Log |
Log | Полено |
Log | Логи |
log | log |
Log | Журнал |
Log | Журнал |
Log. | Дорогая! |
Log? | Журнал? |
Log. | ойдите. |
Log. | Бревно. |
Log | Войдите. |
G (log Eβ log E(β 0.1 )) | G (log Eβ log E(β 0,1 )), |
G (log EV log E (V 0.1 )) | G (log EV log E (V 0,1 )). |
G (log Eβ log E(β 0.1 )) | G (log Eβ log E(β 0,1 )), |
G (log EV log E (V 0.1 )) | G (log EV log E (V 0,.1 )). |
G (log EV log E(V 0.1 ) ) | G (log Ev log E(v 0,1 )), |
G (log EV log E (V 0.1 )) | G (log EV log E (V 0,.1 )). |
G (log Eβ log E(β 0.1 )) | G (log Eβ log E(β 0,1 )), |
G (log EV log E(V 0.1 ) ) | G (log EV log E(V 0.1 ) ), |
G (log EV log E(V 0.1 ) ) | G (log Ev log E(v 0,1)), |
Risk log and quality log not maintained | Отсутствие журналов регистрации рисков и журналов контроля качества |
G (log EV log E(V 0.1 )) | G (log EV log E(V 0.1 ) ), |
G (log EV log E (V 0.1 )) | G (log EV log E (V 0,1 )). |
log(x) log (2 30 10 7) | Logx log (2 30 10 7) |
Add a log entry to the log system | Добавить запись в систему журналирования |
You can choose here the maximum number of log lines displayed in the main view. | Здесь вы можете указать максимальное количество показанных в главном окне строк журнала. |
log%20file%20path в русский, перевод, английский
The logs hissed and popped and she breathed in the unaccustomed smell of genuine wood smoke.
Мэг подошла ближе и вдохнула непривычный запах настоящего древесного дыма.
Literature
There is long standing evidence of women being attracted to logging camps, mines, fish factories, and numerous other economic enclaves in rural areas, particularly on paydays, to sell sex to the men
Давно известно, что женщин приглашают в лагеря лесорубов
, на шахты, рыбные фабрики и многочисленные другие хозяйственные анклавы в сельской местности, особенно в дни выдачи зарплаты, для продажи сексуальных услуг мужчинамMultiUn
Implementation of the transaction log
Ввод в действие регистрационного журнала операций
UN-2
Topics raised by speakers included environmental crime, particularly illegal logging and fishing; counterfeiting and piracy of digital media; and trafficking in firearms.
В число тем, затронутых выступавшими, входили экологическая преступность, в частности незаконная вырубка лесов и незаконное рыболовство; изготовление и сбыт контрафактной продукции и пиратское использование цифровых носителей информации; и незаконный оборот огнестрельного оружия.
UN-2
People loved to cut up logs, but they rarely bothered to check if there were nails in the wood.
Люди часто пилят бревна, но редко вспоминают о том, что надо проверить, нет ли в дереве гвоздей.
Literature
These URLs allow parties outside Campaign Manager to log information about impressions and clicks on your ads, and to launch surveys.
С помощью таких URL сторонние сервисы регистрируют показы и клики, а также активируют опросы.
support.google
He was just staring at the picture on the nightstand—the picture of him and his sister sitting on a gray beach log.
Он просто смотрел на фотографию на тумбочке — ту самую, где он с сестрой сидел на пляже на коряге.
Literature
In the half hour since Heimie’s death, a number of specifications had been logged.
Прошло полчаса с момента смерти Хайми, а уже нашли несколько улик.
Literature
In this context, improper practices (including e.g. so-called “illegal logging”, etc.), which undermine the legitimate market, should be addressed through other appropriate fora
Для этого необходимо исходить из различных физических свойств и преимуществ древесины, учитывая в то же время и ее слабые стороны, что чрезвычайно важно в плане как оказания влияния на потребности рынка, так и их удовлетворения
MultiUn
None of the integrated logging-lumbering enterprises of the former Soviet Union has ever reached such profitability with indicated level of conversion.
Ни в одном леспромхозе бывшего СССР прибыльности при таком ее уровне в переработке никогда не было.
Common crawl
For cases like this, we have a verbose logging option that can help us diagnose the problem.
Для таких случаев существует подробный журнал, который может помочь нам решить проблему.
support.google
The tramway line used to go from the town limits of Kaltan, through Postoyanniy, to Malyshev
Трамвайная линия пролегала от г. Калтан через пос. Постоянный до пос.
Common crawl
One large black log with a branch particularly attracted his attention.
Одна большая черная карча с суком особенно обратила его внимание.
Literature
The Greeting: is the title of the login screen. Setting this is especially useful if you have many servers users may log in to. You may use various placeholders, which are described along with the corresponding key GreetString in & kdmrc
Строка приглашения-это заголовок окна входа в систему. Использование этой настройки особенно удобно, если пользователи могут входить в несколько систем. Вы можете употреблять различные метки-заполнители (комбинации символов, которые программа заменит некоторым значением). Они описаны в файле & kdmrc;, в комментариях к опции GreetString
KDE40.1
One cellphone, complete with call log to the local precinct.
Один сотовый, с историей звонков в местный полицейский участок.
OpenSubtitles2018.v3
For more details and instructions on the admin audit log, see Admin audit log.
Подробнее о журнале аудита администрирования…
support.google
Virtually everything that gets recorded into your notebook in-game will be reflected when you log into the L.A. Noire section of the Social Club website — so you can always be on the case and connected with your investigation when away from your console at work, school or anywhere online at any time.
Фактически все, что записано в вашем ноутбуке в игре, будет отражено, когда вы
WikiMatrix
The second and third lines in the log show RDP connections to a host on another Network.
Вторая и третья строки журнала показывают RDP-соединения с хостом в другой Сети.
Literature
«Further processing» means the transformation of logs into primary wood products, semi-finished and finished products made wholly or almost wholly of tropical timber;
«Дальнейшая обработка» означает переработку бревен в первичные изделия из древесины, полуфабрикаты и готовые изделия, изготовленные полностью или почти полностью из тропической древесины;
UN-2
It can exist in the form of computer files, transmissions, logs, metadata or network data.
Они могут существовать в виде компьютерных файлов, передач, журналов, метаданных или сетевых данных.
UN-2
So how do we stop illegal logging?
Как же остановить незаконную вырубку?
ted2019
Web analyst can track how specific website visitor moves through website, what path that visitor goes, how long stays on specific pages of website, web analytics, clickstream log and clickpath for browsing session of that individual website visitor. Individual website visitor tracking is absolutely unique advantage of TrackSite over all other web analytics software as well as web analytics services.
При помощи TrackSite вы можете видеть как отдельный посетитель движется по сайту, какой путь он выбирает, как долго остается на отдельных страницах сайта, статистику для каждой индивидуальной сессии, и т.п.
Common crawl
Some people built homes out of logs or sod.
Некоторые люди строили дома из бревен и дерна.
LDS
Model used-oil log
Образец Журнала
UN-2
The log book and tax disc are from a write-off I found in a scrapyard in Brixton.’
Регистрационный журнал и налоговый диск со списанного, нашел на свалке в Брикстоне
Literature
Не удается найти страницу | Autodesk Knowledge Network
(* {{l10n_strings.REQUIRED_FIELD}})
{{l10n_strings.CREATE_NEW_COLLECTION}}*
{{l10n_strings.ADD_COLLECTION_DESCRIPTION}}
{{l10n_strings.COLLECTION_DESCRIPTION}} {{addToCollection.description.length}}/500 {{l10n_strings.TAGS}} {{$item}} {{l10n_strings.PRODUCTS}} {{l10n_strings.DRAG_TEXT}}{{l10n_strings.DRAG_TEXT_HELP}}
{{l10n_strings.LANGUAGE}} {{$select.selected.display}}{{article.content_lang.display}}
{{l10n_strings.AUTHOR}}{{l10n_strings.AUTHOR_TOOLTIP_TEXT}}
{{$select.selected.display}} {{l10n_strings.CREATE_AND_ADD_TO_COLLECTION_MODAL_BUTTON}} {{l10n_strings.CREATE_A_COLLECTION_ERROR}}Create log перевод – Telegraph
Create log переводПеревод ‘to save the log file to’ на русский
=== Скачать файл ===
Больше Перевод документов и сайтов Корпоративные решения Проверка орфографии. Войти Войти через Facebook. Присоединяйтесь к Reverso, это удобно и бесплатно! Click this button to save the log file to another file. Нажмите здесь, чтобы сохранить журнал в другом файле. Choosing Save debug logs from the main menu allows you to save the log files to a floppy disk. Выбор Сохранить файлы журнала с отладочной информацией из главного меню позволяет записать файлы протокола на дискету. Use this prior to starting the crypto operation that you want to monitor to get only the output from can then save the log using File Save As Используйте перед началом операции шифрования, которую вы хотите контролировать для получения только её вывода. Затем вы можете сохранить журнал , выбрав Файл Сохранить как Демон аудита auditd извлекает данные аудита из сетевого аудит интерфейса ядра и сохраняет их в файл протокола. The agents will create log files containing application inventory information, and will write the log files to this folder. Агенты будут создавать файлы журналов , содержащие информацию реестра приложений, и записывать эти файлы в данную папку. The algorithm of importing the log file to the database has been modified. Изменен алгоритм импорта лог-файла в базу данных. Saves the log with all results into an HTML file to be able to print or publish. Сохраняет журнал с результатами и другой информацией в файл. Click to erase the log file display and the log file on disk. Нажмите, чтобы удалить файл журнала с диска. The Application Compatibility Toolkit will then parse the log files and write the log data into the SQL Server database. Затем пакет Application Compatibility Toolkit будет анализировать эти файлы и записывать данные в базу на сервере SQL. The log files management procedure provides you with great tools for managing your hard drive space and as well speeding up the log file import process. Механизм управления лог файлами предоставляет вам удобные средства, для того чтобы более гибко распределять дисковое пространство, а также, для того чтобы ускорить процесс импорта лог файлов. Click to refresh the log file display. While you are viewing a log file , newer messages in the corresponding session are not automatically added to the log file display. Use this button to view the most recent messages. Щёлкните здесь для обновления журнала. В то время, когда вы просматриваете журнал , новые сообщения не добавляются к журналу автоматически. Для просмотра последних сообщений пользуйтесь этой кнопкой. After the process of importing log files is over, you can generate reports and apply a filter to the log. После того, как завершится процесс импорта лог файлов , вы сможете формировать отчеты или отфильтровывать журнал. Вот пример того, что вы увидите в файле лога. Helps you to understand the log files , and to manage them correctly. Что такое Log файл и с чем его едят? Даны подсказки для правильного восприятия и управления файлами диагностических сообщений системы. Failed to open the log file. Невозможно открыть файл журнала. Still within the API on the Netware server, press F1 to cancel browsing the log file. В API на сервере Netware нажмите F1, чтобы отменить просмотр файла журнала. Specify the location to save the unzipped files to and click Unzip. Выберите каталог, в котором следует сохранить файлы из архива, и нажмите кнопку Unzip. Use this box to set the maximum size of the log file. This setting does not take effect until you restart log file may have a separate setting. Используйте для установки максимального размера файла журнала. Эти параметры не будут иметь эффекта до перезапуска Konversation. Каждый журнал может иметь свои настройки. Just to make sure everything is fine, we can check the installation log files to validate. Просто убедитесь, что все в порядке. Для этого мы можем проверить файл журнала установки. Зарегистрируйтесь, чтобы увидеть больше примеров. Что такое контекстный словарь Скачать приложение Контакты Правовые вопросы.
Детский расписание на сегодня
День рождения магазина поздравления в стихах красивые
Натуральная зубная паста своими руками
Скачать флеш плеер смарт
Наука хиромантия линии на руке
Найти людей фамилия холзаков
Импульсная характеристика линейной цепи
Tsh норма у женщин
Вырвали зуб мудрости опухла щекачто делать
Создание log-in view · Django в примерах
Создание log-in view
Начнем с использования механизма Django authentication framework, чтобы пользователи могли войти на наш веб-сайт. Наше представление должно выполнять следующие действия для входа в систему:
- Получение username и пароля, из формы.
- Аутентификация пользователя по данным, хранящимся в базе данных.
- Проверка, активности пользователя.
- Вход в систему на сайте и запуск сессии.
Во-первых, мы собираемся создать форму входа. Создайте файл forms.py в каталоге приложения account и добавьте в него следующие строки:
from django import forms
class LoginForm(forms.Form):
username = forms.CharField()
password = forms.CharField(widget=forms.PasswordInput)
Эта форма будет использована для аутентификации пользователей через базу данных. Обратите внимание, что графический элемент PasswordInput используется для отрисовки HTML-элемента input, включая атрибут type=»password». Измените файл views.py приложения account и добавьте в него следующий код:
from django.http import HttpResponse
from django.shortcuts import render
from django.contrib.auth import authenticate, login
from .forms import LoginForm
def user_login(request):
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
user = authenticate(username=cd['username'], password=cd['password'])
if user is not None:
if user.is_active:
login(request, user)
return HttpResponse('Authenticated successfully')
else:
return HttpResponse('Disabled account')
else:
return HttpResponse('Invalid login')
else:
form = LoginForm()
return render(request, 'account/login.html', {'form': form})
Вот что делает ,базовый log-in view: когда представление user_login вызывается с запросом GET, мы создаем новую log-in форму с form = LoginForm(), чтобы отобразить его в шаблоне. Когда пользователь отправляет форму с помощью POST, мы выполняем следующие действия:
- Создается экземпляр формы с отправленными данными с помощью form = LoginForm(request.POST) .
- Проверяется валидность формы. Если форма невалидна, то в шаблоне отображаются ошибки формы (например, если пользователь не заполнил одно из полей).
- Если отправленные данные являются валидными, мы ищем пользователя в базе данных с помощью метода authenticate(). Этот метод принимает username и password и возвращает объект User. Если пользователь не прошел аутентификацию, возвращается необработанный HttpResponse, отображающийся на экране.
- Если пользователь успешно прошел аутентификацию, мы проверяем, активен ли он с помощью атрибуту is_active. Если пользователь не активен, возвращается HttpResponse, отображающийся на экране.
- Если пользователь активен, он входит на сайт.account/’, include(‘account.urls’)),
]
Теперь доступ к log in view можно получить по URL-адресу. Настало время создать шаблон для этого представления. Поскольку для этого проекта нет шаблонов, можно начать с создания базового шаблона, который может быть расширен с помощью шаблона log in. Создайте следующие файлы и каталоги в каталоге приложения account:
templates/ account/ login.html base.html
Отредактируйте шаблон base.html:
{% load staticfiles %} <!DOCTYPE html> <html> <head> <title>{% block title %}{% endblock %}</title> <link href="{% static "css/base.css" %}" rel="stylesheet"> </head> <body> <div> <span>Bookmarks</span> </div> <div> {% block content %} {% endblock %} </div> </body> </html>
Это будет базовый шаблон для сайта. Как и в предыдущем проекте, мы включаем стили CSS в главный шаблон. Эти статические файлы можно найти в архиве, который предоставляется вместе с книгой. Скопируйте каталог static/ приложения account в то же место в проекте, чтобы можно было использовать статические файлы.
Базовый шаблон определяет title и блок content, которые могут быть заполнены контентом с помощью расширяющих шаблонов.
Создадим шаблон для нашей формы входа. Откройте шаблон account/login.html и добавьте в него следующий код:
{% extends "base.html" %} {% block title %}Log-in{% endblock %} {% block content %} <h2>Log-in</h2> <p>Please, use the following form to log-in:</p> <form action="." method="post"> {{ form.as_p }} {% csrf_token %} <p><input type="submit" value="Log-in"></p> </form> {% endblock %}
Этот шаблон включает форму, созданную в представлении. Поскольку наша форма будет отправлена через POST, мы включаем тег шаблона
{% csrf_token %}
для защиты CSRF.В базе данных еще нет пользователей. Сначала необходимо создать суперпользователя, чтобы получить доступ сайту администрирования для управления другими пользователями. Откройте терминал и выполните:
python manage.py createsuperuser
Заполните требуемое имя пользователя, электронную почту и пароль. Затем запустите сервер разработки с помощью команды:
python manage.py runserver
И откройте в браузере http://127.0.0.1:8000/admin/ . Вы увидите сайт администрирования Джанго, в том числе модели пользователя и группы системы аутентификации Джанго. Он будет выглядеть следующим образом:
Создайте нового пользователя и перейдите на страницу http://127.0.0.1:8000/account/login/ . Вы увидите форму входа на сайт:
Теперь отправьте форму, оставив одно из полей пустым. В этом случае будет показано, что форма невалидна:
Если ввести несуществующий логин или неверный пароль, будет получено сообщение Invalid login.
Если ввести существующие учетные данные, будет получено сообщение Authenticated successfully:
6 Мониторинг файлов журналов
Обзор
Zabbix можно использовать для централизованного мониторинга и анализа файлов журналов с/без поддержки ротации журналов.
Можно использовать оповещения для предупреждения пользователей, когда файл журнала содержит конкретные строки или шаблоны строк.
Для наблюдения за файлом журнала у вас должно быть:
- Работающий Zabbix агент на узле сети
- Настроенный элемент данных для мониторинга журнала
Настройка
Проверка параметров агента
Убедитесь, что в файле конфигурации агента:
- Параметр ‘Hostname’ совпадает с именем узла сети в веб-интерфейсе
- Указаны сервера в параметре ‘ServerActive’ для обработки активных проверок
Настройка элемента данных
Настройте элемент данных для мониторинга журнала.
Все обязательные поля ввода отмечены красной звёздочкой.
Специально для элементов данных наблюдения за журналами вы должны указать:
Тип Здесь выберите Zabbix агент (активный). Ключ Укажите:
log[/путь/к/файлу/имя_файла,<регулярное выражение>,<кодировка>,<макс. кол-во строк>,<режим>,<вывод>,<максзадержка>]
или
logrt[/путь/к/файлу/регулярное_выражение_описывающее_шаблон_имени_файла,<регулярное выражение>,<кодировка>,<макс. кол-во строк>,<режим>,<вывод>,<максзадержка>]
Zabbix агент фильтрует записи из файла журнала по регулярному выражению, если оно указано.
Если требуется только количество совпадающих строк укажите:
log.count[/путь/к/файлу/имя_файла,<регулярное выражение>,<кодировка>,<макс. кол-во строк>,<режим>,< максзадержка >]
или
logrt.count[/путь/к/файлу/регулярное_выражение_описывающее_шаблон_имени_файла,<регулярное выражение>,<кодировка>,<макс. кол-во строк>,<режим>,< максзадержка >].
Убедитесь, что у файла имеются права на чтение для пользователя ‘zabbix’, в противном случае состояние элемента данных будет ‘unsupported’.
Для получения более подробных сведений смотрите информацию о ключах log, log.count, logrt и logrt.count в разделе поддерживаемых ключей элементов данных Zabbix агентом.Тип информации Выберите здесь Журнал (лог)
для элементов данных log и logrt илиЧисловой (целое положительное)
для элементов данных log.count и logrt.count.
Если используется опциональный параметрвывод
, вы можете выбрать подходящий тип информации, отличный от «Журнал (лог)».
Обратите внимание, что выбор не журнального типа информации приведет к потере локального штампа времени.Интервал обновления (в сек) Этот параметр задает как часто Zabbix агент будет проверять наличие любых изменений в файле журнала. Указав этот параметр равным 1 секунде, вы можете быть уверенными, что получите новые записи как можно скорее. Формат времени журнала В этом поле вы можете опционально задать шаблон для анализа штампа времени строки журнала.
Если оставить пустым, штамп времени не будет анализироваться.
Поддерживаемые значения:
* y: Год (0001-9999)
* M: Месяц (01-12)
* d: День (01-31)
* h: Час (00-23)
* m: Минута (00-59)
* s: Секунда (00-59)
Например, рассмотрим следующую строку из файла журнала Zabbix агента:
» 23480:20100328:154718.045 Zabbix agent started. Zabbix 1.8.2 (revision 11211).»
Она начинается шестью символами обозначающими PID, далее следует дата, время, и остальная часть строки.
Форматом времени журнала для этой строки является «pppppp:yyyyMMdd:hhmmss».
Обратите внимание, что символы «p» и «:» являются лишь заменителями и могут быть чем угодно, за исключением «yMdhms».Важные замечания
- Сервер и агент следят за размером наблюдаемого журнала и временем последней модификации (для logrt) двумя счетчиками. Дополнительно:
- Также агент использует номера inode (на UNIX/GNU/Linux), индексы файлов (на Microsoft Windows) и MD5 суммы первых 512 байт файла журнала для улучшения выбора в случае когда файлы журнала усекаются и ротируются.
- На системах UNIX/GNU/Linux предполагается, что файловые системы где хранятся файлы журналов, сообщают числа inode, которые могут быть использованы для слежения за состоянием файлов.
- На системах Microsoft Windows Zabbix агент определяет тип файловой системе на которой находятся файлы журналов:
- На файловой системе NTFS 64-битные файловые индексы.
- На файловых системах ReFS (только Microsoft Windows Server 2012) 128-битные файловые ID.
- На файловых системах где файловые индексы меняются (т.е. FAT32, exFAT) используется запасной алгоритм для получения разумного подхода в неопределенных условиях, когда сжатие файла журнала приводит в результате к множеству файлов журналов с одинаковым временем изменения.
- Номера inode, индексы файлов и суммы MD5 собираются Zabbix агентом. Они не передаются Zabbix серверу и теряются в случае остановки Zabbix агента.
- Не меняйте время последней модификации файлов журналов, используя утилиту ‘touch’, не копируйте файл журнала с последующим восстановлением его имени (это изменит идентификатор иноды файла). В обоих случаях файл будет рассматриваться как другой и будет проанализирован с самого начала, что может привести к дубликатам оповещений.
- Если есть несколько совпадающих файлов журналов для элемента данных
logrt[]
и Zabbix агент следит за наиболее новым из них и этот более новый файл журнал удаляется, предупрежающиее сообщение будет записано"there are no files matching "<regexp mask>" in "<directory>"
. Zabbix агент игнорирует файлы журналы с временем изменения меньше чем последнее время модификации полученное агентом во время проверки элемента данныхlogrt[]
.
- Агент начинает читать файл журнала с той позиции, на которой он остановился последний раз.
- Количество байт уже проанализированное (счётчик размера) и время последней модификации (счетчик времени) хранятся в базе данных Zabbix и отправляются агенту, для уверенности, что агент начнет читать файл журнала с этой позиции в случаях, когда агент только что был запущен или агент получил элементы данных, которые были ранее деактивированы или не поддерживались. Однако, если агент получает ненулевой размер счётчика от сервера, но элементы данных logrt[] или logrt.count[] не найдены и не удается найти соответствующие файлы, счётчик размера сбрасывается в 0, чтобы начать анализ сначала, если файлы появятся позже.
- Всякий раз, когда файл журнала становится меньше, чем значение счетчика размера известное агенту, счетчик обнуляется и агент начинает читать файл журнала с самого начала, принимая во внимание счетчик времени.
- Eсли есть несколько файлов журналов, с одинаковым последним временем модификации файла в соответствующей папке, агент пытается корректно проанализировать все файлы журналы с одинаковым временем модификации и избежать пропущенных данных или проанализировать данные дважны, несмотря на это невозможно охватить все возможные ситуации. Агент не предполагает какую либо определенную схему ротации файлов журналов, либо определяет ее. Когда есть несколько фалов журналов с одинаковым последним временем изменения, агент будет обрабатывать их лексикографически в порядке убывания. Таким образом, для некоторых схем ротации файлы журналы будут проанализированы в их оригинальном порядке. Для других же схем ротации журналов первоначальный порядок файла журнала не будет соблюдаться, что может привести к получению найденных по шаблону строк файла журнала в измененном порядке (проблема не случится, если файлы журнала имеют разное время последнего изменения).
- Zabbix агент обрабатывает новые записи файла журнала один раз за Период обновления секунд.
- Zabbix агент отправляет не более чем макс. кол-во строк записей из файла журнала за секунду. Это ограничение предотвращает перегрузку сети и ресурсов процессора и переопределяет значение по умолчанию предусмотренное параметром MaxLinesPerSecond в файле конфигурации агента.
- Для поиска необходимой строки Zabbix обрабатывает в 10 раза больше строк, чем указано в параметре MaxLinesPerSecond. Таким образом, например, если элемент данных
log[]
илиlogrt[]
имеет Интервал обновления 1 секунда, по умолчанию агент будет анализировать не более чем 400 строк файла журнала и будет отправлять не более чем 200 совпавших записей Zabbix серверу за одну проверку. Увеличением параметра MaxLinesPerSecond в файле конфигурации агента или указанием параметра макс. кол-во строк в ключе элемента данных, лимит можно увеличить вплоть до 10000 проанализированных записей в журнале и 1000 совпадающих записей для отправки Zabbix серверу за одну проверку. Если Интервал обновления указан значением в 2 секунды, лимиты для одной проверки могут быть увеличены в два раза больше, чем для Интервала обновления в 1 секунду. - Кроме того, данные из файлов журналов всегда ограничены 50% размера буфера отправки у агента, даже если в буфере нет значений не связанных с данными из файлов журналов. Таким образом, значения макс. кол-во строк будут отправлены за одно соединение (а не в нескольких соединений), параметр BufferSize агента должен быть по крайней мере равен макс. кол-во строк x 2.
- При отсутствии данных для элементов данных журналов весь размер буфера используется для значений не связанных с данными из журналов. Когда появляются значения от файлов журналов они заменяют устаревшие данные не связанные с файлами журналов, если требуется, до максимального уровня 50%.
- Для записей в файле журнала длиннее 256КБ, только первые 256КБ сопоставляются с регулярным выражением, остальная часть игнорируется. Однако, если Zabbix агент был остановлен в процессе обработки длинной строчки, внутреннее состояние агента теряется и длинная строчка может быть проанализирована иначе после запуск агента.
- Специальное примечание для разделителей пути «\»: если формат файла представлен как «file\.log», тогда там не должно быть папки «file», поскольку невозможно однозначно определить, экранируется ли это символ «.» или это первый символ в имени файла.
- Регулярные выражения для logrt поддерживаются только в именах файлов, совпадение регулярного выражения с папкой не поддерживается.
- В UNIX элементы данных
logrt[]
становится НЕПОДДЕРЖИВАЕМЫМ, в случае если папка не существует где файл журнала должен был бы находиться. - В Microsoft Windows, если папка не существует элемент данных не переводится в состояние НЕПОДДЕРЖИВАЕТСЯ (например, если в ключе элемента данных папка указана с ошибкой)
- Отсутствие файла журнала для элемента данных
logrt[]
не переводит его в состояние НЕПОДДЕРЖИВАЕТСЯ. - Ошибки чтения файлов журналов для элемента данных
logrt[]
записываются в журнал агента как предупреждения, но не переводят элемент данных в состояние НЕПОДДЕРЖИВАЕТСЯ. - Журнал Zabbix агента может быть очень полезен для поиска причин почему элементы данных
log[]
илиlogrt[]
становятся НЕПОДДЕРЖИВАЕМЫМИ. Zabbix может мониторить свой файл журнала, за исключением случая когда он в режиме DebugLevel=4.
Извлечение совпадающей части регулярного выражения
Иногда мы можем захотеть извлечь только интересующие значения из требуемого файла вместо того, чтобы получать всю строку, в случае когда найдено совпадение с регулярным выражением.
Начиная с Zabbix 2.2.0, элементы данных файлов журналов расширены возможностью получения извлечения требуемых значений из строк файла. Добавился дополнительный параметр вывод у элементов данных
log
иlogrt
.Использование параметра ‘вывод’ позволяет обозначить подгруппу совпадения в которой мы можем быть заинтересованы.
И так, например
log[/path/to/the/file,"large result buffer allocation.*Entries: ([0-9]+)",,,,\1]
должно позволить получить количество записей со следующего содержания:
Fr Feb 07 2014 11:07:36.6690 */ Thread Id 1400 (GLEWF) large result buffer allocation - /Length: 437136/Entries: 5948/Client Ver: >=10/RPC ID: 41726453/User: AUser/Form: CFG:ServiceLevelAgreement
Причина, почему Zabbix вернет только одно число, потому что параметр ‘вывод’ здесь определен как \1 ссылка только на первую интересующую подгруппу: ([0-9]+)
Вместе с возможностью извлечения и получения числа, значение можно использовать в определениях триггеров.
Использование параметра максзадержка
Параметр ‘максзадержка’ в элементах данных журналов позволяет игнорировать более старые строки с целью получения наиболее новых строк проанализированных в течении “максзадержка” секунд.
Параметр ‘maxdelay’ > 0, может привести к игнорированию важных записей в файлах журналов и пропуску оповещений. Используйте этот параметр осторожно и на свой страх и риск, только в случае необходимости.
По умолчанию элементы данных мониторинга журналов забирают все новые строки появляющиеся в файлах журналов. Однако, имеются приложения, которые в некоторых ситуациях начинают записывать огромное количество сообщений в свои файлы журналов. Например, если база данных или DNS сервер недоступны, то такие приложения могут флудить файлы журналов тысячами практически идентичных сообщений об ошибке до тех пор пока не восстановится нормальный режим работы. По умолчанию, все эти сообщения добросовестно анализируются и совпадающие строки оправляются на сервер, как настроено в элементах данных
log
иlogrt
.Встроенная защита от перегрузов состоит из настраиваемого параметра ‘макс. кол-во строк’ (защищающий сервер от слишком большого количества приходящих совпадающих строк в журнале) и ограничения в 4*’макс. кол-во строк’ (защищает CPU и I/O хоста от перегрузки агентам одной проверкой). Тем не менее имеется 2 проблемы со встроенным механизмом защиты. Первая, на сервер будет отправлено большое количество потенциально не так информативных сообщений, которые займут место в базе данных. Вторая, по причине ограниченного количества строк анализируемых в секунду агент может отставать на часы от самых новых записей в журнале. Вполне вероятно, что вы захотите как можно быстрее быть информированным о текущей ситуации в файлах журналов вместо ковыряния часами старых записей.
Решение этих двух проблем является использование параметра ‘максзадержка’. Если параметр ‘maxdelay’ > 0, во время каждой проверки измеряются количество обработанных байт, количество оставшихся байт и время обработки. Отталкиваясь от этих значений, агент вычисляет оценочную задержку — как много секунд может потребоваться, чтобы проанализировать все оставшиеся записи в файле журнала.
Если задержка не превышает ‘максзадержка’, тогда агент поступает с анализом файла журнала как обычно.
Если задержка больше чем ‘максзадержка’, тогда агент игнорирует часть файла журнала, «перепрыгивая» эту часть к новой оценочной позиции таким образом, чтобы оставшиеся строки можно было проанализировать за ‘максзадержка’ секунд.
Обратите внимание, что агент даже не читает проигнорированные строки в буфер, но вычисляет приблизительную позицию для прыжка в файле.
Сам факт пропуска строк в файле журнала записывается в файл журнала агента, примерно следующим образом:
14287:20160602:174344.206 item:"logrt["/home/zabbix32/test[0-9].log",ERROR,,1000,,,120.0]" logfile:"/home/zabbix32/test1.log" skipping 679858 bytes (from byte 75653115 to byte 76332973) to meet maxdelay
Количество «to byte» является оценочным, потому что после «прыжка» агент скорректирует позицию в файл к началу строки в журнале, которая может быть в файле чуть дальше или раньше.
В зависимости от того как скорость роста соотносится к скорости анализа файла журнала, вы можете не увидеть «прыжков», а можете увидеть редкие или частые «прыжки», большие или маленькие «прыжки», или даже маленькие «прыжки» каждую проверку. Колебания загрузки системы и сетевые задержки также влияют на вычисления задержки и, следовательно, «прыжки» вперед чтобы не отставать от параметра «максзадержка».
Не рекомендуется указывать ‘максзадержка’ < ‘интервал обновления’ (это может привести к частым маленьким «прыжкам»).
Заметки по обработке ротации ‘copytruncate’ файлов журналов
logrt
с опциейcopytruncate
подразумевает, что разные файлы журналов имеют разные записи (по крайней мере штампы времени в них отличаются), поэтому MD5 суммы начальных блоков (до первых 512 байт) будут отличаться. Два файла с одинаковыми MD5 суммами начальных блоков означают, что один из них оригинал, а второй — копия.logrt
с опциейcopytruncate
делает попытку правильной обработки копий файлов журналов без дублирующих сообщений. Тем не менее, такие варианты как создание нескольких копий файлов журналов с одинаковыми штампами времени, ротация файлов журналов чаще чем интервал обновления logrt[] элемента данных, частый перезапуск агента не рекомендуются. Агент пытается справиться со всеми этими ситуациями, но хорошие результаты не гарантируются при всех обстоятельствах.Действия, если произошла ошибка связи между агентом и сервером
Каждая совпадающая строка с элементов данных
log[]
иlogrt[]
и результат проверки каждого элемента данныхlog.count[]
иlogrt.count[]
требует свободный слот в выделенной 50% области буфера отправки в агенте. Элементы буфера регулярно отправляются серверу (или прокси) и слоты буфера становятся снова пустыми.Пока имеются свободные слоты в выделенной области для журналов в буфере отправки в агенте и связь между агентом и сервером (или прокси) нарушена, результаты мониторинга журналов накапливаются в буфере отправки. Такое поведение позволяет смягчить кратковременные нарушения связи.
Во время длительных нарушений свящи все слоты журналов становятся занятыми и выполняются следующие действия:
- Проверки элементов данных
log[]
иlogrt[]
останавливаются. Когда связь восстановится и появятся свободные слоты, проверки вернутся к предыдущей позиции. Не совпадающие строки потеряются. Совпадающие строки не будут потеряны, они просто отправятся позже. - Проверки
log.count[]
иlogrt.count[]
останавливаются, еслиmaxdelay = 0
(по умолчанию). Поведение похоже на элементы данныхlog[]
иlogrt[]
, описанное выше. Обратите внимание, что потеря связи может повлиять на результатыlog.count[]
иlogrt.count[]
: например, одна проверка насчитает 100 совпадающих строк в файле журнала, но по причине отсутствия свободных слотом в буфере проверка будет остановлена. Когда связь восстановится агент насчитает те же 100 совпадающих строк, а также 70 новых совпадающих строк. После чего агент отправит количество = 170, так как они найдены за одну проверку. - Проверки
log.count[]
иlogrt.count[]
приmaxdelay > 0
: если не было «прыжка» во время проверки, тогда поведение аналогично описанному выше. Если всё же был «прыжок» через строки файла журнала, тогда позиция после «прыжка» сохранится и подсчитанный результат будет отброшен. Таким образом, агент пытается не отставать от увеличивающегося файла журнала, даже в случае проблем со связью.
Purpose of persistent files
When Zabbix agent is started it receives a list of active checks from Zabbix server or proxy. For log*[] metrics it receives the processed log size and the modification time for finding where to start log file monitoring from. Depending on the actual log file size and modification time reported by file system the agent decides either to continue log file monitoring from the processed log size or re-analyze the log file from the beginning.
A running agent maintains a larger set of atributes for tracking all monitored log files between checks. This in-memory state is lost when the agent is stopped.
The new optional parameter persistent_dir specifies a directory for storing this state of log[], log.count[], logrt[] or logrt.count[] item in a file. The state of log item is restored from the persistent file after the Zabbix agent is restarted.
The primary use-case is monitoring of log file located on a mirrored file system. Until some moment in time the log file is written to both mirrors. Then mirrors are split. On the active copy the log file is still growing, getting new records. Zabbix agent analyzes it and sends processed logs size and modification time to server. On the passive copy the log file stays the same, well behind the active copy. Later the operating system and Zabbix agent are rebooted from the passive copy. The processed log size and modification time the Zabbix agent receives from server may not be valid for situation on the passive copy. To continue log file monitoring from the place the agent left off at the moment of file system mirror split the agent restores its state from the persistent file.
Agent operation with persistent file
On startup Zabbix agent knows nothing about persistent files. Only after receiving a list of active checks from Zabbix server (proxy) the agent sees that some log items should be backed by persistent files under specified directories.
During agent operation the persistent files are opened for writing (with fopen(filename, «w»)) and overwritten with the latest data. The chance of losing persistent file data if the overwriting and file system mirror split happen at the same time is very small, no special handling for it. Writing into persistent file is NOT followed by enforced synchronization to storage media (fsync() is not called).
Overwriting with the latest data is done after successful reporting of matching log file record or metadata (processed log size and modification time) to Zabbix server. That may happen as often as every item check if log file keeps changing.
After receiving a list of active checks the agent scans persistent file directory and removes obsolete persistent files. Removing is done with delay 24 hours because log files in NOTSUPPORTED state are not included in the list of active checks but they may become SUPPORTED later and their persistent files will be useful. If agent is stopped and started again before 24 hours expire, then the obsolete files will not be deleted as Zabbix agent is not getting info about their location from Zabbix server anymore.
No special actions during agent shutdown.
After receiving a list of active checks the agent marks obsolete persistent files for removal. A persistent file becomes obsolete if: 1) the corresponding log item is no longer monitored, 2) a log item is reconfigured with a different persistent_dir location than before.
Removing is done with delay 24 hours because log files in NOTSUPPORTED state are not included in the list of active checks but they may become SUPPORTED later and their persistent files will be useful.
If the agent is stopped before 24 hours expire, then the obsolete files will not be deleted as Zabbix agent is not getting info about their location from Zabbix server anymore.
Reconfiguring a log item’s persistent_dir back to the old persistent_dir location while the agent is stopped, without deleting the old persistent file by user — will cause restoring the agent state from the old persistent file resulting in missed messages or false alerts.
Naming and location of persistent files
Zabbix agent distinguishes active checks by their keys. For example, logrt[/home/zabbix/test.log] and logrt[/home/zabbix/test.log,] are different items. Modifying the item logrt[/home/zabbix/test.log,,,10] in frontend to logrt[/home/zabbix/test.log,,,20] will result in deleting the item logrt[/home/zabbix/test.log,,,10] from the agent’s list of active checks and creating logrt[/home/zabbix/test.log,,,20] item (some attributes are carried across modification in frontend/server, not in agent).
The file name is composed of MD5 sum of item key with item key length appended to reduce possibility of collisions. For example, the state of logrt[/home/zabbix50/test.log,,,,,,,,/home/zabbix50/agent_private] item will be kept in persistent file c963ade4008054813bbc0a650bb8e09266.
Multiple log items can use the same value of persistent_dir.
persistent_dir is specified by taking into account specific file system layouts, mount points and mount options and storage mirroring configuration — the persistent file should be on the same mirrored filesystem as the monitored log file.
If persistent_dir directory cannot be created or does not exist, or access rights for Zabbix agent does not allow to create/write/read/delete files the log item becomes NOTSUPPORTED.
If access rights to persistent storage files are removed during agent operation or other errors occur (e.g. disk full) then errors are logged into the agent log file but the log item does not become NOTSUPPORTED.
Load on I/O
Item’s persistent file is updated after successful sending of every batch of data (containing item’s data) to server. For example, default ‘BufferSize’ is 100. If a log item has found 70 matching records then the first 50 records will be sent in one batch, persistent file will be updated, then remaining 20 records will be sent (maybe with some delay when more data is accumulated) in the 2nd batch, and the persistent file will be updated again.
Actions if communication fails between agent and server
Each matching line from
log[]
andlogrt[]
item and a result of eachlog.count[]
andlogrt.count[]
item check requires a free slot in the designated 50% area in the agent send buffer. The buffer elements are regularly sent to server (or proxy) and the buffer slots are free again.While there are free slots in the designated log area in the agent send buffer and communication fails between agent and server (or proxy) the log monitoring results are accumulated in the send buffer. This helps to mitigate short communication failures.
During longer communication failures all log slots get occupied and the following actions are taken:
log[]
andlogrt[]
item checks are stopped. When communication is restored and free slots in the buffer are available the checks are resumed from the previous position. No matching lines are lost, they are just reported later.log.count[]
andlogrt.count[]
checks are stopped ifmaxdelay = 0
(default). Behavior is similar tolog[]
andlogrt[]
items as described above. Note that this can affectlog.count[]
andlogrt.count[]
results: for example, one check counts 100 matching lines in a log file, but as there are no free slots in the buffer the check is stopped. When communication is restored the agent counts the same 100 matching lines and also 70 new matching lines. The agent now sends count = 170 as if they were found in one check.log.count[]
andlogrt.count[]
checks withmaxdelay > 0
: if there was no «jump» during the check, then behavior is similar to described above. If a «jump» over log file lines took place then the position after «jump» is kept and the counted result is discarded. So, the agent tries to keep up with a growing log file even in case of communication failure.
Руководство по логированию в Node.js / Хабр
Первая задача, с которой чаще всего сталкиваются разработчики, начинающие программировать на JavaScript, – как регистрировать события в журнале консоли с помощью метода
console.log
. В поисках информации по отладке кода на JavaScript вы найдёте сотни статей в блогах, а также инструкций на StackOverflow, советующих «просто» вывести данные в консоль через метод
console.log
. Это настолько распространённая практика, что пришлось ввести правила для контроля качества кода, подобные
no-console
, чтобы не оставлять случайные записи из журнала в коде для продакшена. Но что делать, если нужно специально зарегистрировать какое-нибудь событие, чтобы предоставить дополнительную информацию?
В этой статье рассматриваются различные ситуации, в которых требуется вести логи; показывается разница между методами
console.log
иconsole.error
в Node.js и демонстрируется, как передать функцию логирования библиотекам, не перегружая пользовательскую консоль.Теоретические основы работы с Node.js
Методы
console.log
и
console.error
можно использовать как в браузере, так и в Node.js. Тем не менее, при использовании Node.js нужно помнить одну важную вещь. Если создать следующий код в Node.js, используя файл под названием
index.js
,
а затем выполнить его в терминале с помощью
node index.js
, то результаты выполнения команд будут располагаться один над другим:Несмотря на то, что они кажутся похожими, система обрабатывает их по-разному. Если посмотреть раздел о работе
console
в документации Node.js, то окажется, чтоconsole.log
выводит результат черезstdout
, аconsole.error
– черезstderr
.Каждый процесс может работать с тремя потоками (
stream
) по умолчанию:stdin
,stdout
иstderr
. Потокstdin
обрабатывает ввод для процесса, например нажатия кнопок или перенаправленный вывод (об этом чуть ниже). Стандартный поток выводаstdout
предназначен для вывода данных приложения. Наконец, стандартный поток ошибокstderr
предназначен для вывода сообщений об ошибках. Если нужно разобраться, для чего предназначенstderr
и в каких случаях его использовать, прочитайте эту статью.Если вкратце, то с его помощью можно использовать операторы перенаправления (
>
) и конвейера (|
) для работы с ошибками и диагностической информацией отдельно от фактических результатов работы приложения. Если оператор>
позволяет перенаправить вывод результата выполнения команды в файл, то с помощью оператора2>
можно перенаправить вывод потока ошибокstderr
в файл. Например, эта команда отправит Hello there в файлhello.log
, а Bye bye в файлerror.log
.Когда необходимо записывать события в журнал?
Теперь, рассмотрев технические аспекты, лежащие в основе записи в журнал, перейдём к различным сценариям, в которых необходимо регистрировать события. Обычно эти сценарии относятся к одной из нескольких категорий:
В этой статье рассматриваются только три последних сценария на базе Node.js.
Ведение журналов для серверных приложений
Существует несколько причин для логирования событий, происходящих на сервере. Например, логирование входящих запросов позволяет получить статистические данные о том, как часто пользователи сталкиваются с ошибкой 404, что может быть этому причиной или какое клиентское приложение
User-Agent
используется. Также можно узнать время возникновения ошибки и её причину.
Для того чтобы поэкспериментировать с материалом, приведённым в этой части статьи, нужно создать новый каталог для проекта. В каталоге проекта создаём
index.js
для кода, который будет использоваться, и выполняем следующие команды для запуска проекта и установкиexpress
:Настраиваем сервер с межплатформенным ПО, который будет регистрировать каждый запрос в консоли с помощью метода
console.log
. Помещаем следующие строки в файлindex.js
:Здесь используется
console.log('%O', req)
для регистрации целого объекта в журнале. С точки зрения внутренней структуры методconsole.log
применяетutil.forma
t, который кроме%O
поддерживает и другие метки-заполнители. Информацию о них можно найти в документации Node.js.При выполнении
node index.js
для запуска сервера и переходе на localhost:3000 в консоли отображается много ненужной информации:Если вместо этого использовать
console.log('%s', req)
, чтобы не выводить объект полностью, много информации получить не удастся:Можно написать собственную функцию логирования, которая будет выводить только нужные данные, однако сначала следует определиться, какая именно информация необходима. Несмотря на то, что в центре внимания обычно оказывается содержание сообщения, в реальности часто необходимо получить дополнительную информацию, которая включает:
- метку времени – чтобы знать, когда произошли события;
- имя компьютера/сервера – если запущена распределённая система;
- идентификатор процесса – если запущено несколько процессов Node с помощью, например,
pm2
; - сообщение – фактическое сообщение с неким содержимым;
- трассировку стека – если ошибка регистрируется;
- дополнительные переменные/информацию.
Кроме того, учитывая, что в любом случае всё выводится в потоки
stdout
и
stderr
, возникает необходимость вести журнал на разных уровнях, а также конфигурировать и фильтровать записи в журнале в зависимости от уровня.
Этого можно добиться, получив доступ к разным частям процесса
process
и написав несколько строчек кода на JavaScript. Однако Node.js замечателен тем, что в нём уже есть экосистемаnpm
и несколько библиотек, которые можно использовать для этих целей. К ним относятся:pino
;winston
;- roarr;
- bunyan (эта библиотека не обновлялась в течение двух лет).
Часто предпочтение отдаётся
pino
, потому что она быстрая и обладает собственной экосистемой. Посмотрим, как
pino
может помочь с ведением журнала. Ещё одно преимущество этой библиотеки – пакет
express-pino-logger
, который позволяет регистрировать запросы.
Установим
pino
иexpress-pino-logger
:После этого обновляем файл
index.js
, чтобы использовать регистратор событий и межплатформенное ПО:В этом фрагменте создали экземпляр регистратора событий
logger
дляpino
и передали его вexpress-pino-logger
, чтобы создать новое межплатформенное ПО для регистрации событий, с которым можно вызватьapp.use
. Кроме того,console.log
заменили при запуске сервера наlogger.info
и добавилиlogger.debug
к маршруту, чтобы отображать разные уровни журнала.Если вы перезапустите сервер, повторно выполнив
node index.js
, то получите на выходе другой результат, при котором каждая строка/линия будет выводиться в формате JSON. Снова переходим на localhost:3000, чтобы увидеть ещё одну новую строку в формате JSON.Среди данных в формате JSON можно обнаружить упомянутую ранее информацию, например метку времени. Также отмечаем, что сообщение
logger.debug
не было выведено. Для того чтобы сделать его видимым, необходимо изменить установленный по умолчанию уровень журнала. После создания экземпляра регистрации событийlogger
было установлено значениеprocess.env.LOG_LEVEL
. Это означает, что можно изменить значение или принять значениеinfo
по умолчанию. ЗапускаяLOG_LEVEL=debug node index.js
, изменяем уровень журнала.Прежде чем это сделать, необходимо решить проблему выходного формата, который не слишком удобен для восприятия в настоящий момент. Этот шаг делается намеренно. Согласно философии
pino
, в целях производительности необходимо перенести обработку записей в журнале в отдельный процесс, передав выходные данные (с помощью оператора|
). Процесс включает перевод выходных данных в формат, более удобный для восприятия человеком, или их загрузку в облако. Эту задачу выполняют инструменты передачи под названиемtransports
. Ознакомьтесь с документацией по инструментамtransports
и вы узнаете, почему ошибки вpino
не выводятся черезstderr
.Чтобы просмотреть более удобную для чтения версию журнала, воспользуемся инструментом
pino-pretty
. Запускаем в терминале:Все записи в журнале передаются с помощью оператора
|
в распоряжениеpino-pretty
, благодаря чему «очищаются» выходные данные, которые будут содержать только важную информацию, отображённую разными цветами. Если снова запросить localhost:3000, должно появиться сообщение об отладкеdebug
.Для того чтобы сделать записи в журнале более читабельными или преобразовать их, существует множество инструментов передачи. Их даже можно отобразить с помощью эмодзи, используя
pino-colada
. Эти инструменты будут полезны для разработки в локальных масштабах. При работе сервера в продакшене может появиться необходимость передавать данные журнала с помощью другого инструмента, записывать их на диск с помощью>
для последующей обработки или делать две операции одновременно, используя определённую команду, напримерtee
.В документе также говорится о ротации файлов журнала, фильтрации и записи данных журнала в другие файлы.
Ведение журналов для библиотек
Изучив способы эффективной организации ведения журналов для серверных приложений, можно использовать ту же технологию для собственных библиотек.
Проблема в том, что в случае с библиотекой может понадобиться вести журнал в целях отладки, не нагружая при этом приложения клиента. Наоборот, клиент должен иметь возможность активировать журнал, если необходимо произвести отладку. По умолчанию библиотека не должна производить записи выходных данных, предоставив это право пользователю.
Хорошим примером этого является фреймворк
express
. Во внутренней структуре фреймворкаexpress
происходит много процессов, что может вызвать интерес к его более глубокому изучению во время отладки приложения. В документации для фреймворкаexpress
сказано, что к началу команды можно добавитьDEBUG=express:*
следующим образом:Если применить эту команду к существующему приложению, можно увидеть множество дополнительных выходных данных, которые помогут при отладке:
Эту информацию нельзя увидеть, если не активирован журнал отладки. Для этого существует пакет
debug
. С его помощью можно писать сообщения в «пространстве имён», и если пользователь библиотеки включит это пространство имён или подстановочный знак, который с ним совпадает, в их переменную средыDEBUG
, то сообщения будут отображаться. Сначала нужно установить библиотекуdebug
:Создайте новый файл под названием
random-id.j
s, который будет моделировать работу библиотеки, и поместите в него следующий код:В результате будет создан новый регистратор событий
debug
с пространством имёнmylib:randomid
, в котором затем будут зарегистрированы два сообщения. Используем его вindex.js
из предыдущего раздела:Если вновь запустить сервер, добавив в этот раз
DEBUG=mylib:randomid node index.js
, то отобразятся записи в журнале отладки для нашей «библиотеки»:Если пользователи библиотеки захотят поместить информацию об отладке в записи журнала
pino
, они могут использовать библиотеку под названиемpino-debug
, созданную командойpino
для корректного форматирования этих записей.Устанавливаем библиотеку:
Перед первым использованием
debug
необходимо инициализироватьpino-debug
. Самый простой способ сделать это – использовать флаги-r
или--require
, чтобы запросить модуль перед запуском скрипта. Перезапускаем сервер, используя команду (при условии, что установленаpino-colada
):В результате записи журнала отладки библиотеки отобразятся так же, как и в журнале приложения:
Выходные данные интерфейса командной строки (CLI)
Последний случай, который рассматривается в этой статье, касается ведения журнала для интерфейса командной строки. Предпочтительно, чтобы журнал, регистрирующий события, связанные с логикой программы, вёлся отдельно от журнала для регистрации данных интерфейса командной строки. Для записи любых событий, связанных с логикой программы, нужно использовать определённую библиотеку, например
debug
. В этом случае можно повторно использовать логику программы, не будучи ограниченным одним сценарием использования интерфейса командной строки.
Создавая интерфейс командной строки с помощью Node.js, можно добавить различные цвета, блоки с изменяемым значением или инструменты форматирования, чтобы придать интерфейсу визуально привлекательный вид. Однако при этом нужно держать в уме несколько сценариев.
По одному из них интерфейс может использоваться в контексте системы непрерывной интеграции (CI), и в этом случае лучше отказаться от цветового форматирования и визуально перегруженного представления результатов. В некоторых системах непрерывной интеграции установлен флаг
CI
. Удостовериться, что вы находитесь в системе непрерывной интеграции, можно с помощью пакетаis-ci
, который поддерживает несколько таких систем.Некоторые библиотеки, например
chalk
, определяют системы непрерывной интеграции и отменяют вывод в консоль цветного текста. Давайте посмотрим, как это работает.Установите
chalk
с помощью команды npminstall chalk
и создайте файл под названиемcli.js
. Поместите в файл следующие строки:Теперь, если выполнить этот скрипт с помощью
node cli.js
, результаты будут представлены с использованием разных цветов:Но если выполнить скрипт с помощью
CI=true node cli.js
, цветовое форматирование текстов будет отменено:В другом сценарии, о котором стоит помнить,
stdout
запущен в режиме терминала, т.е. данные выводятся на терминал. В этом случае результаты можно красиво отобразить с помощьюboxen
. В противном случае выходные данные, скорее всего, будут перенаправлены в файл или куда-то ещё.Проверить работу потоков
stdin
,stdout
илиstderr
в режиме терминала можно, посмотрев на атрибутisTTY
соответствующего потока. Например,process.stdout.isTTY
.TTY
означает «телетайп» (teletypewriter) и в данном случае предназначен специально для терминала.Значения могут различаться для каждого из трёх потоков в зависимости от того, как были запущены процессы Node.js. Подробную информацию об этом можно найти в документации Node.js, в разделе «Ввод/вывод процессов».
Посмотрим, как значение
process.stdout.isTTY
различается в разных ситуациях. Обновляем файлcli.js
, чтобы проверить его:Теперь запускаем
node cli.js
в терминале и видим словоtrue
, после которого цветным шрифтом отображается сообщение:После этого повторно выполняем команду, но перенаправляем выходные данные в файл, а затем просматриваем содержимое:
В этот раз в терминале появилось слово
undefined
, за которым следует сообщение, отображённое бесцветным шрифтом, поскольку перенаправление потокаstdout
вывело его из режима терминала. Здесьchalk
использует инструментsupports-color
, который с точки зрения внутренней структуры проверяетisTTY
соответствующего потока.Такие инструменты, как
chalk
, выполняют эти действия самостоятельно. Однако, разрабатывая интерфейс командной строки, нужно всегда помнить о ситуациях, когда интерфейс работает в системе непрерывной интеграции или осуществляется перенаправление выходных данных. Эти инструменты помогают использовать интерфейс командной строки на более высоком уровне. Например, данные в терминале можно организовать более структурировано и, еслиisTTY
имеет значениеundefined
, переключиться на более простой способ анализа.Заключение
Начать использовать JavaScript и внести первую строчку в журнал консоли с помощью
console.log
довольно просто. Но перед тем как развернуть код в продакшене, следует учесть несколько аспектов использования журнала. Данная статья является лишь введением в различные способы и решения, применяемые при организации журнала событий. Она не содержит всего, что вам необходимо знать. Поэтому рекомендуется обращать внимание на удачные проекты с открытым кодом и отслеживать, каким образом в них решена проблема логирования и какие инструменты используются при этом. А теперь попробуйте сами вести логи без вывода данных в консоль.
Если вы знаете другие инструменты, о которых стоит упомянуть, напишите о них в комментариях.
журнал просмотра— Перевод на немецкий — примеры русский
Эти примеры могут содержать нецензурные слова, основанные на вашем поиске.
Эти примеры могут содержать разговорные слова на основе вашего поиска.
В разделе «Недавние события» нажмите «Просмотр журнала ».
Чтобы просмотреть более полный список событий, нажмите View Log .
Um eine umfassendere Liste mit Ereignissen anzuzeigen, нажмите Sie auf Protokoll anzeigen .Выберите Просмотр журнала , чтобы просмотреть журнал.
Wählen Sie Log anzeigen , um das -Protokoll zu überprüfen.Чтобы закрыть диалоговое окно View Log :
Настраивает журнал материализованного представления для указанной главной таблицы, которая поддерживает по крайней мере одно материализованное представление с быстрым обновлением.
Richtet ein Materialized View Log für die angegebene Master-Tabelle ein, die mindestens eine Materialized View mit schnellen Refreshes unterstützt.«Настройка журналов материализованных представлений на главном сайте», если вы хотите выполнить быстрое обновление материализованных представлений. Настройте материализованный журнал представления для каждой таблицы, которая будет главной таблицей.
«Журналы материализованных представлений для настройки основного сайта», если быстрое обновление для материализованных представлений не используется. Konfigurieren Sie Hierfür ein Materialized View Log für jede Tabelle, die als Master-Tabelle verwendet werden soll.Очистите или удалите журнал материализованного представления для главной таблицы материализованного представления:
Bereinigen oder löschen Sie das Materialized View Log für die Master-Tabelle der Materialized View:Выбор Просмотр журнала открывает статус текущего сеанса в Блокноте.
Wenn Sie die Option Protokoll anzeigen auswählen, wird der Status der aktuellen Sitzung in Notepad angezeigt.Чтобы узнать, успешно ли были обновлены ваши файлы, нажмите View log .
Um zu überprüfen, ob die Dateien erfolgreich aktualisiert wurden, click Sie auf Protokoll anzeigen .В свойствах сканирования при доступе на вкладке «Отчеты» щелкните «Просмотр журнала ».
Нажмите Sie im Dialogfeld Eigenschaften für Scan bei Zugriff auf der Registerkarte Berichte auf Protokoll anzeigen .На вкладке «Отчеты о свойствах сканирования при доставке» нажмите View Log .
Нажмите Sie auf der Registerkarte Berichte über Eigenschaften des Scannens bei Empfang auf Protokoll anzeigen .Пересмотрена информация о буфере TriFlex, чтобы включить сведения о том, когда следует нажимать кнопку View Log .
Die Informationen zum TriFlex-Puffer wurden überarbeitet und geben nun an, wann das Icon „ Protokoll anzeigen » anzuwählen ist.Если есть ошибки, но файл по-прежнему импортируется, нажмите View Log для получения подробной информации.
Wenn Fehler vorhanden sind, die Datei aber trotzdem importiert werden kann, klicken Sie auf Protokoll anzeigen , um Einzelheiten einzusehen.Чтобы прочитать подробности обновления, нажмите View Log .
В результатах публикации на Map Server нажмите View Log .
Для получения дополнительной информации о сканировании нажмите кнопку View log .
Чтобы просмотреть журнал ошибок после обновления, нажмите View Log .
Falls Sie nach der Aktualisierung das Fehlerprotokoll anzeigen möchten, нажмите Sie auf View Log .В окне Requests выберите запрос и выберите View Log .
Wählen Sie im Fenster «Prozesse» den Prozess und dann « Log anzeigen «.Чтобы открыть диалоговое окно View Log :
После завершения установки выберите View Log , чтобы просмотреть сведения об установке.
Nach dem Abschluss der Installation wählen Sie Protokoll anzeigen , um Einzelheiten der Installation anzzeigen.log — Перевод на русский — примеры китайский
Предложения: авторизоваться войти nЭти примеры могут содержать нецензурные слова, основанные на вашем поиске.
Эти примеры могут содержать разговорные слова на основе вашего поиска.
查看节点 log 内group1信息:
View the group1 information in the node log :操作之后 log 依然正常运行:
After that log work both the normal way and in the curried form:文本 log 如何增加标签的大小
text log How to increase the size of tags;退出时自动保存 log 到文件中
;Save log to file automatically when exit设置上述参数后,使用 log 显示日志消息。
After you have set above parameters, use log to show the log messages.I grew成长 up with hippie嬉皮士 parents父母 in a log 日志 cabin舱.
I grew up with hippie parents in a log cabin.log 文件 (logs 文件夹)会占用相当可观的空间。
Considerable amount of space can be occupied by log files (logs folder).如果有下面图片中的 log 的话代表成功:
If there is a log in the picture below, it means success:缩小MS-SQL资料库 log 档大小
Narrowing the MS-SQL database log file sizeL log 指定要监视的 NT 事件日志
L log Specifies the NT Event Log(s) to monitor体积电阻率(厘米) log p at 250ºC
Electrical volume resistivity (in cm) log p at 250ºClog targets 的义务是正确处理日志消息。
It is the responsibility of log targets to properly deal with log messages.与下列各项相关的其他工作 courier delivery log
Other jobs related to courier delivery log你可以通过配置 log 组件的 flushInterval 属性来自定义数量:
You can customize this number by configuring the flushInterval property of the log component:log 档案显示为 Error 1921.
Problem The log file shows Error 1921.SuperSocket 支持你通过接口实现自己的 log factory:
SuperSocket supports you implement your own log factory from the interface:在每一个 log 语句中指明 `TransactionId`
Assign ‘TransactionId’ to each log statement功能 log () 返回的自然对数指定的数量。
Function log () returns the natural logarithm of the specified number.无法使用 Eclipse IDE 日志监控 ( log monitor), 为什么?
The Eclipse log monitor is not working, why?log 助手代码允许在执行模板时记录上下文的状态。
The log helper allows for logging of context state while executing a template.Регистрация вызовов API Amazon Translate с помощью AWS CloudTrail
Amazon Translate интегрирован с AWS CloudTrail, сервисом, обеспечивающим запись действий выполняется пользователем IAM, ролью IAM или сервисом AWS в Amazon Translate. CloudTrail фиксирует все API вызывает Amazon Translate как события. Сюда входят вызовы из консоли Amazon Translate. и вызовы кода для операций Amazon Translate API. Если вы создаете трейл CloudTrail, вы можете включить непрерывную доставку событий CloudTrail, включая события для Amazon Translate, в Корзина Amazon Simple Storage Service (Amazon S3).Если вы не настроите трейл, вы все равно сможете просматривать самые последние события в консоли CloudTrail в История событий . Вы можете использовать информация, собранная CloudTrail для определения запроса, сделанного в Amazon Translate, IP-адрес, с которого был сделан запрос, кто сделал запрос, когда он был сделан и дополнительные детали.
Дополнительные сведения о CloudTrail см. в Руководстве пользователя AWS CloudTrail.
Информация Amazon Translate в CloudTrail
CloudTrail включается в вашей учетной записи AWS при ее создании.Когда активность возникает в Amazon Translate, эта активность записывается в событии CloudTrail вместе с другим сервисом AWS. события в История событий . Вы можете просматривать, искать и загружать последние события в вашей учетной записи AWS. Дополнительные сведения см. в разделе Просмотр событий с помощью CloudTrail Event. История.
Для постоянной записи событий в вашей учетной записи AWS, включая события для Amazon Translate, создайте след.След позволяет CloudTrail доставлять журнал файлы в корзину Amazon S3. По умолчанию, когда вы создаете трейл с помощью консоли, трейл применяется ко всем регионам AWS. Журнал регистрации событий из всех регионов в AWS. раздел и доставляет файлы журналов в указанную вами корзину S3. Ты сможешь настроить другие сервисы AWS для дальнейшего анализа и обработки собранных данных о событиях в журналах CloudTrail. Для получения дополнительной информации см. следующее:
Все действия Amazon Translate регистрируются CloudTrail и документируются в справочнике по API. раздел.Например, звонки на
DeleteTerminology
,ImportTerminology
иДействия TranslateText
создают записи в файлах журналов CloudTrail.Каждое событие или запись журнала содержит информацию о том, кто сгенерировал запрос. Этот информация поможет вам определить следующее:
Был ли запрос сделан пользователем root или пользователем AWS Identity and Access Management (IAM) учетные данные
Был ли запрос сделан с временными учетными данными безопасности для роли или федеративный пользователь
Был ли запрос сделан другой службой AWS
Дополнительные сведения см. в разделе UserIdentity CloudTrail. Элемент.
Общие сведения о файле журнала Amazon Translate Записи
Трейл — это конфигурация, позволяющая доставлять события в виде файлов журналов в указанную вами корзину Amazon S3. Файлы журнала CloudTrail содержат один или больше записей в журнале. Событие представляет собой отдельный запрос из любого источника и включает информация о запрашиваемом действии, дата и время совершения действия, запрос параметры и так далее.Файлы журнала CloudTrail не являются упорядоченной трассировкой стека общедоступного API. вызовы, поэтому они не отображаются в каком-либо определенном порядке.
В следующем примере показана запись журнала CloudTrail, демонстрирующая
TranslateText
действие.{ "eventVersion": "1.05", "идентификатор пользователя": { "тип": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::111122223333:пользователь/администратор", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "имя_пользователя": "Администратор" }, "eventTime": "2019-09-03T20:32:50Z", "eventSource": "перевести.amazonaws.com", "eventName": "ПеревестиТекст", "awsRegion": "США-запад-2", "исходный IP-адрес": "192.0.2.0", "userAgent": "aws-cli/1.16.207 Python/3.4.7 Linux/4.9.184-0.1.ac.235.83.329.metal1.x86_64 botocore/1.12.197", "параметры запроса": { "текст": "HIDDEN_DUE_TO_SECURITY_REASONS", "sourceLanguageCode": "en", "targetLanguageCode": "фр" }, "элементы ответа": { "translationText": "HIDDEN_DUE_TO_SECURITY_REASONS", "sourceLanguageCode": "en", "targetLanguageCode": "фр" }, "requestID": "f56da956-284e-4983-b6fc-59befa20e2bf", "идентификатор события": "1dc75278-84d7-4bb2-861a-493d08d67391", "eventType": "АвсАпиКолл", "recipientAccountId": "111122223333" }
Преобразование запросов SQL в Kusto — Azure Data Explorer
Выбор данных из таблицы ВЫБЕРИТЕ * ИЗ зависимостей
зависимости
— SELECT имя, resultCode FROM зависимости
зависимости | название проекта, код результата
— ВЫБЕРИТЕ ПЕРВЫЕ 100 * ИЗ зависимостей
зависимости | взять 100
Нулевая оценка SELECT * FROM зависимостей
WHERE resultCode НЕ NULLзависимости
| где isnotnull(resultCode)Операторы сравнения (дата) SELECT * FROM зависимости
WHERE timestamp > getdate()-1зависимости
| где метка времени > назад (1 д)— SELECT * FROM зависимости
WHERE временная метка BETWEEN .Azure.*"Сравнение (логическое) SELECT * FROM зависимости
WHERE !(успешно)зависимости
| где успех == "Ложь"Группировка, агрегация ВЫБЕРИТЕ имя, AVG(длительность) ИЗ зависимостей
СГРУППИРОВАТЬ ПО именизависимости
| суммировать avg(длительность) по имениОтдельный SELECT DISTINCT имя, тип FROM зависимости
зависимости
| суммировать по имени, введите— SELECT name, COUNT(DISTINCT type)
FROM зависимости
GROUP BY nameзависимости
| суммировать по имени, типу | суммировать count() по имени
// или приблизительно для больших наборов
зависимости
| суммировать dcount(type) по имениПсевдонимы столбцов, расширение ВЫБЕРИТЕ OperationName как имя, AVG (длительность) как AvgD FROM зависимостей
GROUP BY nameзависимости
| суммировать AvgD = avg(duration) by Name=operationName— ВЫБЕРИТЕ конференцию, CONCAT(sessionid, ' ' , session_title) AS session FROM ConferenceSessions
Сеансы конференций
| расширить session=strcat(sessionid, " ", session_title)
| проектная конференция, сессияЗаказ ВЫБЕРИТЕ имя, временную метку ИЗ зависимостей
ORDER BY временной метки ASCзависимости
| имя проекта, метка времени
| упорядочить по отметке времени asc нули последниеТоп n по показателю SELECT TOP 100 name, COUNT(*) as Count FROM зависимостей
GROUP BY name
ORDER BY Count DESCзависимости
| суммировать Count = count() по имени
| 100 лучших по количеству descСоюз SELECT * FROM зависимостей
UNION
SELECT * FROM исключенийобъединение зависимостей, исключения
— SELECT * FROM зависимости
ГДЕ метка времени > ...
UNION
SELECT * FROM исключения
WHERE timestamp > ...зависимости
| где отметка времени > назад (1 д)
| union
(исключения
| где метка времени > назад(1d))Присоединиться SELECT * FROM зависимости
LEFT OUTER JOIN исключение
ON dependencies.operation_Id = exceptions.operation_Idзависимости
| тип соединения = leftouter
(исключения)
на $left.operation_Id == $right.operation_IdВложенные запросы SELECT * FROM зависимостей
WHERE resultCode ==
(SELECT TOP 1 resultCode FROM зависимостей
WHERE resultId = 7
ORDER BY timestamp DESC)зависимости
| где результирующий код == toscalar(
зависимости
| где результирующий идентификатор == 7
| первый по метке времени desc
| проект результирующий код)Наличие SELECT COUNT(*) FROM зависимостей
GROUP BY name
HAVING COUNT(*) > 3зависимости
| суммировать Count = count() по имени
| где Количество > 3log На арабском языке — перевод и значение на английском арабский Словарь всех терминов Страница 1
الخيارات الموجودة في شاشة الرئيسية ل المدير هي تثبيت و عرض التفاصيل و ذهاب إلى عنوان ويب و عرض الشهادة, إرسال و حذف و تنزيل تطبيقات و عرض السجل و إرسال السجل و تحديث و ضبط و تعليمات و خروج
Параметры в главном представлении диспетчера: «Установить», «Просмотреть сведения», «Перейти к веб-адресу», «Просмотреть сертификат», «Отправить», «Удалить», «Загрузки приложений», «Просмотреть журнал », «Отправить журнал », «Обновить», «Настройки», «Справка» и «Выход
». الهواتف الخلويةتثبيت, و عرض التفاصيل, و ذهاب إلى عنوان ويب, و عرض الشهادة, و إرسال, و حذف, و تنزيل التطبيقات, و عرض السجل, و إرسال السجل, و تحديث, و ضبط, و تعليمات, و خروج
Установка, просмотр сведений, переход к веб-адресу, просмотр сертификата, отправка, удаление, загрузка приложений, просмотр журнала , отправка журнала , обновление, настройки, справка и выход
الهواتف الخلويةيشتمل سجل vpn على رسائل الدخول التي يتم تسجيلها عند تثبيت تزو تحديث تثبيت تزامن لمخططات vpn أو عند استخدام اتصالات vpn لإنشاء اتصالات مشفرة
Журнал VPN содержит сообщений журнала , записанных при установке, обновлении и синхронизации политик VPN и использовании VPN-подключений для создания зашифрованных подключений
الهواتف الخلويةيشتمل سجل vpn على رسائل الدخول التي يتم تسجيلها عند تثبيت أو تحديث تثبيت أو تحديث تثبيت تزامن لملفات إعداد vpn أو عند استخدام نقاط وصول vpn لإنشاء اتصالات مشفرة
Журнал VPN содержит сообщений журнала , записанных при установке, обновлении и синхронизации политик VPN и использовании точек доступа VPN для создания зашифрованных подключений
الهواتف الخلويةعرض سجل الأحداث سجل الأحداث
Просмотр журнала событий Журнал событий
مصرفيةحتى تصبح المعادلة هذذا: لوغاريتم y يساوي لوغاريتم b مرفوعا للأس x أو x ضرب لوغاريتم b
И вы получите log y = log b в x, или x log b
Номер телефонаسجل مراجعة ، سجل تطبيق ، سجل نظام
аудит журнал приложение журнал система журнал
عامةФайл журнала (что это такое и как его открыть)
Файл с расширением LOG file представляет собой файл данных журнала (иногда называемый файлом журнала ), используемый всеми видами программного обеспечения и операционных систем для отслеживания того, что произошло, обычно с подробной информацией о событии, датой и временем.Его действительно можно использовать для всего, что приложение сочтет целесообразным записать.
Например, антивирусное программное обеспечение может записывать в файл журнала информацию о результатах последнего сканирования, например о том, какие файлы и папки были просканированы или пропущены, а также какие файлы были помечены как содержащие вредоносный код.
Программа резервного копирования файлов также может использовать файл LOG, который можно открыть позже, чтобы просмотреть предыдущее задание резервного копирования, прочитать все обнаруженные ошибки или посмотреть, куда были сохранены резервные копии файлов.
Гораздо более простая цель для некоторых файлов LOG — просто объяснить новейшие функции, которые были включены в самое последнее обновление программного обеспечения. Обычно они называются примечания к выпуску или журналы изменений .
Как открыть файл журнала
Данные, содержащиеся в этих файлах, обычно представляют собой обычные текстовые файлы. Вы можете прочитать файл журнала с помощью любого текстового редактора, например Блокнота Windows.
Возможно, вы также сможете открыть его в своем веб-браузере.Просто перетащите его прямо в окно браузера или используйте сочетание клавиш Ctrl+O , чтобы открыть диалоговое окно для поиска файла.
Как преобразовать файл журнала
Чтобы изменить формат файла журнала на что-то вроде CSV, PDF или формат Excel, например XLSX, лучше всего скопировать данные в программу, которая поддерживает эти форматы файлов, а затем сохранить их как новый файл.
Например, вы можете открыть его в текстовом редакторе, а затем скопировать весь текст, вставить его в программу для работы с электронными таблицами, такую как Excel или OpenOffice Calc, а затем сохранить файл в формате CSV или XLSX.
После того, как вы сохранили его в формате CSV, используйте этот онлайн-конвертер CSV в JSON.
Как выглядит файл журнала
Этот файл LOG, созданный EaseUS Todo Backup, выглядит так, как большинство файлов LOG:
C:\Program Files (x86)\EaseUS\Todo Backup\Agent.exe
2021-05-10 17:35:16 [M:00,T/P:1940/6300] Журнал инициализации
2021-05-10 17:35:16 [M:29,T/P:1940/6300] Ldq : Агент начать установку!
2021-05-10 17:35:16 [M:29,T/P:1940/6300] Ldq : Агент звонит в CreateService!
2021-05-10 17:35:16 [M:29,T/P:1940/6300] Ldq: вызов агента CreateService – успех!
Как видите, есть сообщение, которое программа записала в LOG-файл, и оно включает в себя расположение EXE-файла и точное время записи каждого сообщения.
Однако некоторые из них могут быть не очень хорошо структурированы и могут быть трудными для чтения, как этот, созданный с помощью инструмента для преобразования видео:
.[1236] 06-26 09:06:25 ОТЛАДКА [ВВОД]для разбора ввода: merge=fn:mix=sts:0:1\,fn:picture=dur:3000\,fr:29970:1000\,fn :normal=raw:ffmpeg\,sts:0\,crop:0:0:1920:1080:1920:1080:1920:1080:1\,fn:ufile:C:/Users/Jon/AppData/Local/VideoSolo Studio/VideoSolo Free Video Converter/template/img_0.png\,fn:pad=pa:8:63:48000,fn:normal=raw:ffmpeg\,sts:0:1\,probep:5000000:20000000\,crop :0:0:1280:720:1920:1080:1920:1080:1\,поворот:0:0:0\,эффект:0:0:0:0:0\,эффект:256\,fn:ufile :C:/Пользователи/Джон/Рабочий стол/SampleVideo_1280x720_2mb.mp4,fn:mix=sts:0:1\,fn:picture=dur:3000\,fr:29970:1000\,fn:normal=raw:ffmpeg\,sts:0\,crop:0:0:1920 :1080:1920:1080:1920:1080:1\,fn:ufile:C:/Users/Jon/AppData/Local/VideoSolo Studio/VideoSolo Free Video Converter/template/img_1.png\,fn:pad=pa: 8:63:48000 [1236] 06-26 09:06:25 DEBUG [INPUT:normal]Готов открыть файл: ufile:C:/Users/Jon/AppData/Local/VideoSolo Studio/VideoSolo Free Video Converter/template/ img_0.png
[1236] 06-26 09:06:25 DEBUG [OPEN]FfMediaInput начать открыть
Другие могут даже показаться полной тарабарщиной, поскольку нет никаких временных меток.В подобных случаях журнал записывается в файл с расширением .LOG, но не соответствует стандарту, которому соответствует большинство файлов LOG:
.КОПИРОВАТЬ main/python/prj/build.lst wntmsci12.pro/inc/python/build.lst
КОПИРОВАТЬ main/python/wntmsci12.pro/misc/build/Python-2.7.6/Lib/abc.py wntmsci12.pro/lib/python/abc.py
КОПИРОВАТЬ main/python/wntmsci12.pro/misc/build/Python-2.7.6/Lib/abc.pyc wntmsci12.pro/lib/python/abc.pyc
КОПИРОВАТЬ main/python/wntmsci12.pro/misc/build/Python-2.7.6/Lib/aifc.py wntmsci12.pro/lib/python/aifc.py
КОПИРОВАТЬ main/python/wntmsci12.pro/misc/build/Python-2.7.6/Lib/antigravity.py wntmsci12.pro/lib/python/antigravity.py
КОПИРОВАТЬ main/python/wntmsci12.pro/misc/build/Python-2.7.6/Lib/anydbm.py wntmsci12.pro/lib/python/anydbm.py
КОПИРОВАТЬ main/python/wntmsci12.pro/misc/build/Python-2.7.6/Lib/argparse.py wntmsci12.pro/lib/python/argparse.py
КОПИРОВАТЬ main/python/wntmsci12.pro/misc/build/Python-2.7.6/Lib/ast.py wntmsci12.pro/lib/python/ast.py
КОПИРОВАТЬ main/python/wntmsci12.pro/misc/build/Python-2.7.6/Lib/asynchat.py wntmsci12.pro/lib/python/asynchat.py
КОПИРОВАТЬ main/python/wntmsci12.pro/misc/build/Python-2.7.6/Lib/asyncore.py wntmsci12.pro/lib/python/asyncore.py
Дополнительная информация о файлах журнала
Вы можете создать свой собственный файл журнала в Windows, используя встроенное приложение «Блокнот», и ему даже не нужно иметь это расширение файла. Просто введите .LOG в самой первой строке, а затем сохраните его как обычный файл TXT.
Каждый раз, когда вы открываете его, текущая дата и время будут добавляться в конец файла. Вы можете добавить текст под каждой строкой, чтобы при ее закрытии, сохранении и повторном открытии сообщение оставалось и были доступны следующие текущие дата и время.
Вы можете видеть, как этот простой пример начинает выглядеть как гораздо более полные файлы LOG, показанные выше:
.ЛОГ
8:54 19 февраля 2021
тестовое сообщение
16:17 21 февраля 2021
С помощью командной строки вы также можете автоматически создать файл журнала через командную строку при установке файла MSI.
Все еще не можете открыть?
Если вы получаете сообщение об ошибке прав доступа или вам сообщают, что вы не можете просмотреть файл LOG, скорее всего, он либо все еще используется программой и не откроется до тех пор, пока не будет выпущен, либо он был создан временно и уже удален с тех пор. время, когда вы пытались открыть его.
Вместо этого может случиться так, что файл LOG хранится в папке, для которой у вас нет разрешений.
На этом этапе, если ваш файл по-прежнему не открывается так, как вы думаете, дважды проверьте, правильно ли вы читаете расширение.Он должен читаться как «.LOG», но не как .LOG1 или .LOG2.
Эти последние два расширения файлов связаны с реестром Windows как файлы журнала Hive и поэтому хранятся в двоичном виде и не читаются в текстовом редакторе. Они находятся в подпапке config папки System32.
Спасибо, что сообщили нам!
Расскажите нам, почему!
Другой Недостаточно подробностей Сложно понятьЛокализуйте пользовательский интерфейс с помощью редактора переводов | Разработчики Android
Редактор переводов обеспечивает консолидированное и редактируемое представление всех ваших стандартных и переведенные строковые ресурсы.
Для ознакомления с переводом приложения на разные языки см. Поддержка различных языков и культур.
Рис. 1. Редактор переводов , показывающий текст приложения перед перевод
Строковые ресурсы
Строковые ресурсы для проекта содержатся в файлах 90 861 strings.xml 90 264. Ваш проект имеет файл strings.xml по умолчанию
, который содержит строковые ресурсы по умолчанию язык для вашего приложения, который вы ожидаете от большинства пользователей вашего приложения говорить.Вы также можете перевести 90 861 файл strings.xml 90 264, содержащих строку ресурсы для других языков, которые вы хотите использовать в своем приложении.
После того, как вы закончите файл
strings.xml
по умолчанию, вы можете добавить переводы самостоятельно или оплатить профессиональные услуги по переводу. В любом случае, вы должны принять преимущества функций Android Studio, которые помогут вам управлять и тестировать локализуемый текст. Для информации об услугах профессионального перевода см. Заказ услуг перевода.Открыть редактор переводов
Вы можете получить доступ к редактору переводов из следующих мест в Android Studio.
Открыть из представления Android
- В проекте > панель Android слева, выберите ModuleName > res > values .
- Щелкните правой кнопкой мыши файл strings.xml и выберите Открыть редактор переводов .
Редактор переводов отображает пары ключ-значение из
строк.xml
файл.Примечание: Когда вы перевели
файл strings.xml
, ваш проект имеет несколько соответствующих значений папок с суффиксами, указывающими язык, например значений-es для испанского языка. Ваш файлstrings.xml
по умолчанию всегда находится в значений (без суффикса) папка.
На рис. 1 показан текст приложения по умолчанию (в данном случае английский) в редакторе переводов для простое приложение до завершения работы по переводу.Содержание переведено
файлы strings.xml
будут отображаться справа от столбца Untranslatable с по одному столбцу на каждый язык, как показано на рисунке 2.Открыть изнутри strings.xml
Доступ к редактору переводов можно получить из любого из файлов
strings.xml
.- На панели Проект > Android слева выберите ModuleName > res > values .
- Дважды щелкните strings.xml , чтобы открыть его для редактирования.
- В файле strings.xml щелкните ссылку Открыть редактор в правом верхнем углу.
Примечание: Если щелкнуть ссылку Скрыть уведомление , Открыть ссылка на редактор исчезает. Чтобы вернуть его, закройте и снова откройте проект.
Открыть в редакторе дизайна
Вы можете открыть редактор переводов из редактора дизайна редактора макета, чтобы отредактировать по умолчанию и переведено текст, чтобы лучше соответствовать макету.Для получения информации о переключении языков в редакторе дизайна см. см. Отображение переведенного текста в редакторе дизайна.
- На панели Проект > Android слева выберите ModuleName > разрешение > макет .
- Дважды щелкните файл content_main.xml , чтобы открыть его для редактирования.
- Щелкните вкладку Design в левом нижнем углу, чтобы открыть редактор Design .
- В редакторе дизайна выберите Язык раскрывающийся список.
- Выбрать Редактировать переводы .
Настройка непереводимых строк
В редакторе переводов вы можете выбрать Unstranslatable для укажите, что вы не хотите, чтобы текст в этой строке переводился. Текст, который вы бы перевод не требуется, может быть текст, относящийся к продукту, такой как торговые названия и товарные знаки, или технические термины, не имеющие перевода.
Когда вы отметите Untranslatable , соответствующая строка по умолчанию
строк.xml
добавляет translatable="false" . В следующем примере EasyApp в верхней строке не переводится, потому что это название продукта.<ресурсы>
EasyApp Настройки Я простое приложение! Следующая страница Я вторая страница! Вторая активность ресурсы>Добавление и удаление языков
Редактор переводов поддерживает ПП 47 и объединяет коды локали и региона (страны) в единый выбор для целевых локализаций.Локаль определяет больше, чем язык. Локаль включает зависящее от страны форматирование для такие вещи, как дата и время, валюты и десятичные дроби.
Чтобы добавить язык, сделайте следующее:
- В редакторе переводов щелкните значок глобуса .
- В раскрывающемся списке выберите язык, который вы хотите добавить.
Новый язык появится в редакторе переводов , а значений-* папка с
строкой.xml
добавлен в проект. Например, значений-es для испанского языка.
Чтобы удалить язык, выполните следующие действия:
Вы можете удалить язык в редакторе переводов , удалив все значения в столбце (видеть Редактируйте, добавляйте или удаляйте текст), или вы можете удалить папку проекта. для этого языка следующим образом:
- На панели Проект > Android слева выберите ИмяМодуля > разрешение .
- Щелкните правой кнопкой мыши папку values-* для языка, который вы хотите удалить. Например, значений-привет для хинди.
- В раскрывающемся списке выберите Удалить , чтобы удалить папку и ее файл strings.xml .
Редактировать, добавлять и удалять текст
Вы можете работать с текстовыми настройками непосредственно в файле strings.xml или через Редактор переводов .В этом разделе описывается Редактор переводов подход. В редакторе переводов можно редактировать, добавлять или удалить текст через представление списка или через поле Translation в нижней части редактора Translations .
Рисунок 2. Представление списка вверху и поле Translation внизу
Просмотр списка
Чтобы отредактировать или добавить текст, выполните следующие действия:
- Дважды щелкните ячейку, которую вы хотите изменить или добавить текст.
- Выполните копирование и вставку клавиатуры или, если у вас есть клавиатура, которая поддерживает диакритические знаки метки, введите непосредственно в виде списка.
- Нажмите клавишу или переместите курсор за пределы поля.
Чтобы удалить текст, выполните следующие действия:
- Дважды щелкните ячейку, которую хотите удалить.
- В представлении списка выберите текст и нажмите Удалить .
- Нажмите клавишу или переместите курсор за пределы поля.
Поле перевода
Чтобы отредактировать или добавить текст, выполните следующие действия:
- В представлении списка один раз щелкните ячейку, которую вы хотите изменить или добавить текст.
- В поле Перевод делаем клавиатуру копипаст, или если у вас есть клавиатура, которая поддерживает диакритические знаки метки, введите непосредственно в поле Translation .
- Нажмите клавишу или переместите курсор за пределы поля.
Чтобы удалить текст, выполните следующие действия:
- Щелкните один раз ячейку, которую хотите удалить.
- В поле Перевод выберите текст и нажмите Удалить .
Клавиши добавления и удаления
В редакторе переводов в столбце Ключ перечислены уникальные идентификаторы для каждого элемент данных в файлах
strings.xml
. Вы можете добавлять и удалять ключи через Редактор переводов. Когда вы удаляете ключ, Редактор переводов удаляет его и все его сопутствующие переводы. Редактор переводов использует рефакторинг безопасного удаления для удалить ключ, чтобы вы знали, используется ли текст ключа в другом месте, и у вас есть шанс внести необходимые корректировки перед удалением ключа.Рефакторинг безопасного удаления гарантирует, что ваш код все еще компилируется после удаления ключа.Чтобы добавить ключ, выполните следующие действия:
- В редакторе переводов нажмите Добавить ключ .
- В диалоговом окне введите имя ключа, значение по умолчанию и расположение
файл strings.xml по умолчанию .
Рисунок 3. Добавить ключ
Чтобы удалить ключ, выполните следующие действия:
- В редакторе переводов выберите ключ, который хотите удалить.
- Щелкните Удалить ключи .
В диалоговом окне Удалить решите, хотите ли вы хотите выполнить поиск в комментариях и строках, и нажмите OK .
Рис. 4. Диалоговое окно удаления
Если нет ссылок (использований) на удаляемый ключ, или если все ссылки благополучно разборная, ключ удаляется. В противном случае Редактор переводов отображает Usages Detected Диалоговое окно с информацией об обнаруженных проблемах.
Рис. 5. Диалоговое окно удаления
- Выберите View Usages , чтобы просмотреть, что будет удалено. Найти безопасное удаление
Диалоговое окно «Конфликты » показывает все использования, которые небезопасно удалять, поэтому
вы можете отредактировать соответствующий код.
Рисунок 6. Небезопасное использование
- Щелкните правой кнопкой мыши использование, чтобы отобразить контекстное меню, и выберите Перейти к источнику , чтобы вы можете внести необходимые изменения.
- На панели Find Safe Delete Conflicts выберите Rerun Safe Delete , чтобы убедитесь, что нет других применений, требующих внимания.
- Когда использование очищено, щелкните Выполнить рефакторинг , чтобы удалить ключ.
Исправление ошибок
На рис. 7 показан редактор переводов , отображающий содержимое английского, испанского, и французский
strings.xml
файла.Красный текст указывает на строки, в которых есть ошибки.Рис. 7. Красный текст указывает на состояние ошибки, которое вы нужно исправить
Чтобы исправить ошибку, наведите указатель мыши на красный текст, чтобы отобразить объяснение проблемы и ее разрешающая способность.
При внесении изменений в редакторе переводов базовый
файлы strings.xml
обновляются с учетом ваших изменений. Когда вы делаете изменения в файлеstrings.xml
, соответствующий столбец в редакторе переводов обновления с вашими изменениями.Пример Редактор переводов исправления:
- На рис. 7 показано, что строка app_name имеет флажок Untranslatable , но есть предоставлен испанский перевод. Удалите испанский перевод, чтобы исправить ошибку.
- На рис. 7 показано, что в строке next_page отсутствует французский перевод. Используйте ваш клавиатуры, чтобы скопировать Page Suivante в ячейку, чтобы исправить ошибку. Клавиатура копипаст операция копирует текст с диакритическими знаками в ячейку.
Отображение переведенного текста в редакторе дизайна
Чтобы увидеть, как переведенный текст отображается в макете вашего приложения, переключите переключатель текст между версией по умолчанию и переведенной версией в редакторе дизайна следующим образом:
- На панели Проект > Android слева выберите ModuleName > разрешение > макет .
- Дважды щелкните файл content_main.xml , чтобы открыть его для редактирования.
- Щелкните вкладку Design в левом нижнем углу, чтобы открыть редактор Design .
- В редакторе дизайна выберите Язык раскрывающийся список.
- Выбрать Редактировать переводы .
- Выберите язык, который вы хотите использовать для просмотра вашего приложения.
Рисунок 8. Раскрывающийся список языков с выбранным испанским
Редактор дизайна отображает макет вашего приложения на выбранном языке, который в данном случае Испанский язык.
Рис. 9. Редактор дизайна, отображающий переведенный текст в Испанский
Установите редактор дизайна на язык по умолчанию
Чтобы вернуть язык по умолчанию, выберите es > Язык . .
Рисунок 10. Установить язык по умолчанию
Управление и тестирование локализуемого текста
Платформа Android и Android Studio предоставляют несколько функций, которые помогут вам управлять и тестировать ваше локализуемое приложение текст.Эти функции имеют опции, помогающие решать проблемы со сценариями с письмом справа налево (RTL), например, арабский или иврит. Тестирование локализуемого текста позволяет внести коррективы в пользовательский интерфейс. текст и его макет, прежде чем вы зафиксируете свои сообщения в исходном репозитории для отправки перевод позже.
Рефакторинг вашего проекта для поддержки RTL
В Android Studio есть команда рефакторинга, которая включает поддержку двунаправленного текста. в
TextView
,ConstraintLayout
иLinearLayout
элемента так ваши приложения могут отображать и разрешать пользователям редактировать текст как слева направо (LTR), так и справа налево (RTL) скрипты.Команда также обеспечивает автоматическое зеркальное отображение макетов пользовательского интерфейса приложения и всех представлений. виджеты. Чтобы увидеть изменение направления текста и зеркальное отображение макета, необходимо также установить свойства направления текста и макета в редакторе макетов.Следующая процедура показывает, как реорганизовать ваш проект для поддержки RTL:
- Выберите Рефакторинг > Добавить поддержку RTL, где это возможно , чтобы отобразить диалоговое окно, показанное на
рисунок 11.
Рис. 11. Добавить поддержку RTL
- Если элемент
Файл AndroidManifest.xml
делает не иметь атрибутаandroid:supportsRTL="true"
, затем установите флажок Обновить AndroidManifest.xml . - Если
targetSdkVersion
вашего приложения имеет значение 17 или выше, выберите Заменить левые/правые свойства на начальные/конечные свойства .В этом случае ваши свойства должны использовать «начало» и «конец» вместо «слева» и «справа». За Например,android:paddingLeft
становитсяandroid:paddingStart
. - Если ваше приложение
targetSdkVersion
16 или меньше, выберите Сгенерировать версии -v17 В этом случае ваш XML должен использовать оба набора свойств. Например, ваш XML должен использовать обаandroid:paddingLeft
иandroid:paddingStart
.
- Если элемент
- Чтобы отобразить окно Find Refactoring Preview , щелкните Run .
Рисунок 12. Проверить предварительный просмотр
- Щелкните Выполнить рефакторинг .
Дополнительные сведения о рефакторинге вашего проекта для поддержки RTL см. Встроенная поддержка RTL в Android 4.2.
Свойства направления текста и компоновки
Окно свойств справа предоставляет свойство textDirection для использования с текстовые виджеты и свойство layoutDirection для использования с виджетами макета для изменить направление текста и компонентов макета.Свойства направления перечислены в окно Properties справа и работайте с API уровня 17 или выше.
Чтобы увидеть изменение направления текста и зеркальное отображение макета, вы также должны рефакторинг проекта для поддержки RTL. На английском языке направление текста изменение перемещает только знаки препинания с правой стороны на левая часть текста; например, «Привет, мир!» становится «!Hello World». Чтобы увидеть текст LTR переключитесь на RTL, вы должны использовать язык RTL в своем приложении.Если вы хотите использовать английский язык и посмотреть текст переключается на RTL для целей тестирования, используйте псевдолокали. Псевдолокали не зависят от команды рефакторинга и свойств направления.
Чтобы получить доступ к свойствам направления и использовать их, выполните следующие действия:
- В Редакторе макетов выберите текстовый виджет.
- Откройте окно Свойства и найдите свойство RTL, которое вы хотите использовать.
Чтобы задать значение свойства, выберите один из следующих вариантов:
- firstStrong: Значение по умолчанию для корневого представления.Первый сильный направленный характер определяет направление абзаца. Если нет ярко выраженного направленного характера, направление абзаца — это разрешенное направление компоновки представления.
- anyRtl: Направление абзаца — RTL, если он содержит какой-либо сильный символ RTL; в противном случае это LTR, если он содержит сильные символы LTR. Если нет ни того, ни другого, направление абзаца — это разрешенное направление компоновки представления.
- ltr: Направление абзаца — LTR.
- rtl: Направление абзаца — справа налево.
- языковой стандарт: Направление абзаца определяется языковым стандартом системы.
- наследовать: По умолчанию. Используйте направление, заданное в родительском элементе.
- Чтобы просмотреть перевернутый текст и макет, запустите приложение.
Псевдолокальные
Псевдолокаль — это смоделированная локаль, разработанная с учетом характеристик языков. что вызывает Пользовательский интерфейс, макет, RTL и другие проблемы перевода при переводе приложения.