Команда Linux logger
logger — это простая, но мощная команда командной строки в Linux, используемая для добавления записей в системный журнал (syslog). Она позволяет пользователям и скриптам записывать пользовательские сообщения в файлы системного журнала, что делает её важным инструментом для системного администрирования и устранения неполадок.
Типичные случаи использования:
- Запись ключевых операций во время выполнения сценария
- Отслеживание состояния задач системного обслуживания
- Записи журнала для пользовательских приложений
- Удалённое журналирование (с сервером syslog)
Базовый синтаксис и параметры
Базовый синтаксис команды logger следующий:
logger [选项] [消息]
Общие параметры опций
| Опция | Описание |
|---|---|
-p, --priority <优先级> |
Указать приоритет журнала (facility.level) |
-t, --tag <标签> |
Помечать записи журнала указанной меткой |
-i, --id |
Включать ID процесса в каждую строку журнала |
-f, --file <文件> |
Читать содержимое журнала из указанного файла |
-s, --stderr |
Также выводить журналы в стандартный поток ошибок |
-n, --server <主机> |
Отправлять журналы на удалённый сервер syslog |
-P, --port <端口> |
Указать порт удалённого сервера syslog |
-u, --socket <套接字> |
Указать сокет домена UNIX вместо устройства по умолчанию |
-d, --udp |
Отправлять журналы по протоколу UDP (по умолчанию) |
-T, --tcp |
Отправлять журналы по протоколу TCP |
-h, --help |
Показать справочную информацию |
-V, --version |
Показать информацию о версии |
Подробное объяснение приоритета
Приоритет журнала состоит из двух частей: категории и уровня, в форматеfacility.level。
Типы категорий
| Код категории | Описание |
|---|---|
| auth | Сообщения безопасности/авторизации |
| authpriv | Приватные сообщения авторизации |
| cron | Демон Cron |
| daemon | Системный демон |
| kern | Сообщения ядра |
| lpr | Система печати |
| почта | Почтовая система |
| news | Система новостей |
| syslog | Внутренние сообщения syslogd |
| user | Сообщения уровня пользователя (по умолчанию) |
| local0-7 | Настраиваемое локальное использование |
Уровни логирования
| Код уровня | Описание | Значение |
|---|---|---|
| emerg | Система неработоспособна | 0 |
| alert | Необходимо немедленно принять меры | 1 |
| crit | Критические условия | 2 |
| err | Условия ошибок | 3 |
| warning | Предупреждающие условия | 4 |
| notice | Нормальные, но значимые условия | 5 |
| информация | Информационные сообщения | 6 |
| debug | Сообщения уровня отладки | 7 |
Практические примеры
Примеры базового использования
-
Простая запись в журнал:
logger "系统备份任务开始执行"
Это запишет сообщение в системный журнал, по умолчанию используя приоритет user.notice.
-
Запись в журнал с тегом:
logger -t BACKUP "数据库备份完成"
Запись в журнале будет отображаться как:
BACKUP: 数据库备份完成 -
Указать приоритет:
logger -p local0.notice "自定义应用程序启动"
Расширенные примеры использования
-
Чтение содержимого журнала из файла:
logger -f /var/log/myapp.log
-
Запись статуса выполнения скрипта:
#!/bin/bash logger -t SCRIPT -p user.info "脚本开始执行" # 执行任务... if [ $? -eq 0 ]; then logger -t SCRIPT -p user.info "任务执行成功" else logger -t SCRIPT -p user.err "任务执行失败" fi -
Удалённая запись логов:
logger -n 192.168.1.100 -P 514 "发送到远程服务器的日志"
-
Одновременный вывод в терминал и в лог:
logger -s "这条消息会同时出现在终端和日志中"
Просмотр логов и управление ими
После записи логов вы можете просмотреть их с помощью следующих команд:
-
Просмотр системных логов:
journalctl # системы с systemd или tail -f /var/log/syslog # традиционные системы -
Фильтрация логов по определённому тегу:
journalctl -t BACKUP
-
Просмотр логов по времени:
journalctl --since "2023-01-01" --until "2023-01-02"
Лучшие практики и меры предосторожности
-
Соглашения по тегам логов:
- Используйте осмысленные теги (например, имя приложения или имя скрипта)
- Поддерживайте согласованность тегов, чтобы упростить фильтрацию и анализ в дальнейшем
-
Выбор приоритета:
- Используйте разные уровни надлежащим образом; не используйте один и тот же уровень для всех логов
- Используйте warning или выше для критических операций
-
Рекомендации по содержимому логов:
- Включайте достаточно контекстной информации
- Избегайте записи конфиденциальной информации (например, паролей)
- Делайте логи краткими, но полными
-
Вопросы производительности:
- Высокочастотная запись в лог может повлиять на производительность
- Рассмотрите использование буферизованных или асинхронных методов для записи больших объёмов логов
-
Ротация логов:
- Регулярно очищайте старые логи
- Настройте logrotate для управления размерами файлов логов
ЧАВО
Вопрос 1: Почему моя запись журнала не появляется в /var/log/syslog?
Ответ 1: Это может быть по следующим причинам:
- Используемая вами категория (facility) настроена на запись в другой файл
- Уровень журналирования ниже минимального уровня записи, настроенного в системе
- Система использует journald вместо традиционного syslog
Вопрос 2: Как определить, какая система логирования используется в моей системе?
Ответ 2: Выполните следующую команду для проверки:
ps aux | grep -E "syslog|journald"
Вопрос 3: Можно ли использовать несколько опций одновременно?
Ответ 3: Да, например:
logger -t MYAPP -p local0.err -i "关键错误发生"
Вопрос 4: Как проверить конфигурацию удалённого сервера логов?
Ответ 4: Используйте logger для отправки тестового сообщения:
logger -n 远程服务器IP -P 端口 "测试消息"
Из этой статьи вы должны были освоить основное использование команды logger. Этот, казалось бы, простой инструмент очень полезен в практическом системном администрировании и разработке приложений, помогая вам создать полноценный механизм логирования. Рекомендуется больше практиковаться в реальной работе и гибко использовать различные параметры опций в соответствии с конкретными потребностями.
Другие расширения
Справочник команд Linux