Перейти к основному содержанию
`Ctrl`+`K`

# Логирование в standalone режиме

## Внесение изменений в конфигурацию

Каталог конфигурации:

- `{{workspace}}/application/config/`

Правило внесения изменений:

- не изменять основные файлы:

  - `logback-LoggerContext.xml`

  - `logback-LoggerContext-session.xml`

- изменять только расширения:

  - `logback-LoggerContext-ext.xml`

  - `logback-LoggerContext-session-ext.xml`

После внесения изменений требуется перезапуск сервисов:

    sudo systemctl restart global3
    sudo systemctl restart globalscheduler

## Просмотр логов

### 1) systemd-journald

Для просмотра рекомендуется использовать:

    sudo journalctl -u global3 -n 200 -f
    sudo journalctl -u globalscheduler -n 200 -f

Фильтрация по времени:

    sudo journalctl -u global3 --since "1970-01-01 00:00:00"
    sudo journalctl -u global3 --since "1 hour ago"

Поиск по строке (локальная фильтрация):

    sudo journalctl -u global3 | grep -i "error"

### 2) Syslog (при наличии rsyslog)

В зависимости от дистрибутива системные журналы могут располагаться, например, по путям:

- `/var/log/syslog` (Debian),

- `/var/log/messages` (RHEL/CentOS).

Пример просмотра:

    sudo tail -F /var/log/syslog
    sudo grep -R "global3" /var/log/syslog

Примечание: syslog может содержать записи, полученные как напрямую из приложения (SyslogAppender), так и через экспорт journald в rsyslog.

### 3) Файлы логов приложения

Файлы по умолчанию сохраняются в директории:

`/opt/global/globalserver/logs`

Базовые операции:

    ls -lah /opt/global/globalserver/logs
    tail -F /opt/global/globalserver/logs/*.log

## Уровни логирования (рекомендации)

- Для постоянной эксплуатации рекомендуется уровень `INFO`.

- Уровни `DEBUG`/`TRACE` предназначены для диагностики и должны включаться:

  - на ограниченное время,

  - точечно (по конкретным логгерам/пакетам),

  - с обязательным контролем объёма и последующей отменой изменений.

## Ротация логов (примеры)

### Вариант A - ротация средствами Logback (если используются файловые аппендеры)

Пример для системных логов (размещается в `logback-LoggerContext-ext.xml`):

    <included>
        <appender name="FILEOUT_EXT" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>/opt/global/globalserver/logs/globalserver.log</file>

            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <fileNamePattern>/opt/global/globalserver/logs/globalserver.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
                <maxFileSize>100MB</maxFileSize>
                <maxHistory>14</maxHistory>
                <totalSizeCap>2GB</totalSizeCap>
            </rollingPolicy>

            <encoder>
                <pattern>[%-5level] %d{dd-MM-yyyy HH:mm:ss.SSS} [%thread] %logger - %msg%n</pattern>
            </encoder>
        </appender>

        <root level="INFO">
            <appender-ref ref="FILEOUT_EXT"/>
        </root>
    </included>

### Вариант B - logrotate

Файл: `/etc/logrotate.d/globalserver`

    /opt/global/globalserver/logs/*.log {
      daily
      rotate 14
      compress
      delaycompress
      missingok
      notifempty
      dateext
      maxsize 500M
      copytruncate
    }

Проверка конфигурации:

    sudo logrotate -d /etc/logrotate.d/globalserver
    sudo logrotate -f /etc/logrotate.d/globalserver

### Ограничение объёма journald

Файл: `/etc/systemd/journald.conf` (пример):

    SystemMaxUse=1G
    SystemKeepFree=2G
    MaxRetentionSec=14day

Применение:

    sudo systemctl restart systemd-journald

## Логи HAProxy (если используется в составе стенда)

### Просмотр логов HAProxy

Конфигурация находится в /etc/haproxy/haproxy.cfg

    global
    log /dev/log  local0 debug   # debug — самый подробный уровень
    log /dev/log  local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

      # Default SSL material locations
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

      # See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate
    ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
    ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
    ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets

    defaults
    option tcplog
    option  dontlognull
    option  log-health-checks      # Логирует результат health checks
    option  abortonclose           # Логирует обрыв соединений
    option  dontlog-normal
    option  log-separate-errors
    log global
    mode  http
      #option  httpchk
    option  httplog
    timeout connect 5000
    timeout client  50000
    timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

    frontend http-frontend
    bind *:8080
    default_backend http-backend

    backend http-backend
    server s1 192.168.200.16:8080 check

Команда для просмотра логов:

    journalctl -u haproxy -f

Пример логов

0/0 «GET /login/ing/glow.ong HTTP/1.1“ 09:32:53 hаproxy hаprоxy [44489]: 192.168.200.1:54520 [04/Aug/2025:09:32:38.821] http-frontend http-backend/s1 0/0/1212/834/14706 «GET /view/fonts/inter/inter-regular-variable.ttf HTTP/1.1» 200 121659 - - CD– 6/6/2 200 135559 - - CD– 6/6/