Логирование сервера приложений.#

Общий обзор#

Логирование в проекте осуществляется с использованием Logback. Конфигурация логирования задается в XML-файлах, расположенных в каталоге {{workspace}}/application/config/.

Структура конфигурационных файлов#

{{workspace}}/
└── application/
    └── config/
        ├── logback-LoggerContext.xml  # Основной файл конфигурации системных логов
        ├── logback-LoggerContext-ext.xml # Проектные настройки системных логов
        ├── logback-LoggerContext-session.xml  # Основной файл конфигурации логов сессии
        ├── logback-LoggerContext-session-ext.xml # Проектные настройки логов сессии

! Внимание!
Логирование в проекте настроено с учетом системных и сессионных логов.
Изменение основных файлов конфигурации запрещено, но пользователь может вносить свои изменения через файлы logback-LoggerContext-ext.xml и logback-LoggerContext-session-ext.xml.

Основные конфигурационные файлы#

  1. logback-LoggerContext.xml

    • Основной файл конфигурации логирования.

    • Отвечает за запись системных логов.

    • Фиксирует сообщения начиная с уровня INFO и выше.

    • Изменение этого файла не допускается.

  2. logback-LoggerContext-session.xml

    • Конфигурация логирования текущей сессии.

    • Фиксирует сообщения начиная с уровня WARN и выше.

    • Изменение этого файла не допускается.

Расширяемые файлы конфигурации#

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

  1. logback-LoggerContext-ext.xml

    • Подключается к logback-LoggerContext.xml.

    • Позволяет добавить или изменить настройки логирования системных событий.

  2. logback-LoggerContext-session-ext.xml

    • Подключается к logback-LoggerContext-session.xml.

    • Позволяет добавить или изменить настройки логирования текущей сессии.

Пример добавления кастомного логгера#

Чтобы добавить кастомный логгер в файл logback-LoggerContext-ext.xml, можно использовать следующий шаблон:

 <included> 
     <appender name="FILEOUT-EXT" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
             <fileNamePattern>/opt/global/globalserver/logs/global3.%d{yyyy-MM-dd_HH}.log</fileNamePattern> 
         </rollingPolicy> 
         <encoder> 
             <pattern>%d{HH:mm:ss.SSS} [%thread] %logger - %msg%n</pattern> 
         </encoder> 
     </appender> 
	
	
	 <root level="INFO"> 
	 <appender-ref ref="FILEOUT-EXT"/> 
	 </root> 
 </included> 

Конфигурация логов для 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/

cD - Клиент не отправил и не подтвердил никаких данных, и в конечном итоге время ожидания клиента истекло.

SC - Сервер явно отклонил TCP-соединение.

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