Описание настроек для сервера логирования log.json

Описание системы логирования

Система логирования запускается как отдельный поток и принимает сетевые подключения клиентов, который в свою очередь передают ей данные для логирования. Система пытается сортировать полученные сообщения по времени до тех пор, пока они находятся в кэше. Но если сообщение уже было записано в файл, следующее сообщение записывается после него, даже если у предыдущего метка времени была больше, чем у текущего сообщения могут быть записаны в лог

Для настройки возможности логирования в модуле .js, первой строкой файла необходимо прописать подключение к модулю логирования const log = require('../lib/log')(module);. Это необходимо для корректного вычисления имени файла .js, из которого производится логирование. Для логирования можно использовать функции ниже. Количество параметров, переданных в функцию логирования не ограничено. Тип параметров может быть любой, сервер логирования попытается преобразовать все переданные параметры к текстовому типу, удобному для чтения.

Формат данных в лог файлах

<date> <time>[<dirs:<file>:[<TID>:]<PID>] <logLevel>: <logMessage>

  • <date> - дата (месяц и день). Устанавливает функция логирования
  • <time> - время в миллисекундах. Устанавливает функция логирования
  • <dirs> - каталоги относительно корневого каталога ALEPIZ до файла .js из которого запущена функция логирования.
  • <file> - файл .js без расширения из которого была запущена функция логирования
  • <TID> - если функция логирования запущена из потока, то Thread ID
  • <PID> - идентификатор процесса в ОС (Process ID)
  • <logLevel> - уровень логирования для сообщения (S, D, I, W, E, EXIT)
  • <logMessage> - сообщение, переданное в функцию логирования

Например:

2.08 13:32:23.292[server:serverController:1:1584] I: Starting 10 children for server: connect,constant,Jav... CPU cores number: 8, servers number: 1

Функции логирования

  • log.debug(), log.info(), log.warn(), log.error() - используются для записи данных в лог файл с соответствующим уровнем логирования.
  • log.exit() - используется для записи информации с максимальным приоритетом в файл exit.log при выходе.
  • log.throw() - для записи информации и дальнейшем выходе из программы.
  • log.options(<options>, logData,....) - для передачи параметров в функцию логирования в виде { level: <log level>, filenames: [<file name1>, ...], keepLineBreaks: <true|false> }
  • log.row(logLevel, arrayOfLogData, nodejsModule, options) - для записи данных в лог файл в ручном режиме.

Настройки сервера логирования

  • localAddress - IP адрес к которому будет привязан сервер логирования. По умолчанию 127.0.0.1.
  • serverAddress - IP адрес, к которому будут подключаться клиенты для логирования. По умолчанию 127.0.0.1.
  • serverPort - TCP порт, который будет слушать сервер и к которому будут подключаться клиенты для логирования. По умолчанию 10161.
  • dir - Каталог для лог файлов. По умолчанию logs. Если каталог не существует, при запуске сервиса он будет создан автоматически.
  • maxSocketErrorsCnt - максимальное количество ошибок сокета, после которого сервер будет остановлен. По умолчанию 10000.
  • childrenNumber - количество потоков, обрабатывающих запросы записи в лог и аудита. По умолчанию 10.
  • logLevel - максимальный уровень логирования для вывода сообщений в log файлы. Может быть D - log.debug(), I - log.info(), W - log.warn(), E - log.error(). По умолчанию I.
  • wrapLines - (true|false) оставлять форматирование (true) или удалять из логирования переводы строк (false). По умолчанию false.
  • logToConsole - (true|false) выводить или не выводить сообщения на консоль по умолчанию. По умолчанию false.
  • alwaysLogToConsoleIfLogLevelMoreThan - всегда выводить сообщения на консоль, если уровень логирования сообщений больше установленного. По умолчанию E.
  • file - Имя файла для логирования по умолчанию, если не настроено логирование в другой файл. По умолчанию log.log
  • exitLogFileName - имя лог файла в который будут записываться сообщения при штатном или аварийном выходе функцией log.exit(). Запись этой функцией происходит без использования сервера логирования максимально быстро, что позволяет не терять информацию. По умолчанию exit.log.
  • daysToKeepLogs - количество дней для хранения логов при их ежедневной ротации. По умолчанию 2
  • auditDB - путь до базы данных с информацией по выполняемым пользователями действиям. Используется для хранения информации о сделанных изменениях и вывода информации о выполненных действиях в Веб интерфейсе ALEPIZ. Можно указать путь до файла с базой данных или объект с несколькими базами данных. Несколько баз данных имеет смысл указывать для резервирования информации. Если указано несколько баз данных, то данные будут записаны в каждую базу, а прочитаны только из первой в списке.
    • path путь до базы данных (абсолютный или относительный)
    • file - имя файла базы данных
    • relative - (Boolean) какой тип пути к БД указан: абсолютный (false) или относительный (true)
  • logToAudit - (true|false) выводить или не выводить все сообщения по умолчанию в auditDB. По умолчанию false.
  • auditSystemTasks - записывать в аудит результаты выполнения задач, запущенных автоматически, например, при автоматическом обнаружении и заведении новых объектов мониторинга. Может привести к быстрому росту базы auditDB. По умолчанию false.
  • maxRecordsReturnedFromDatabase - максимальное количество записей, которые могут быть возвращены в Веб интерфейс пользователя при просмотре лога о результате выполненного действия или при запросе в аудите. По умолчанию 100.
  • maxSessionsReturnedFromDatabase - максимальное количество сессий, которые могут быть возвращены при запросе в аудите. По умолчанию 1000.
  • maxRecordsReturnedFromBrowserForOneSession - количество записей, которые могут быть возвращены в Веб интерфейс пользователя при выполнении действием ajax.js или server.js. По умолчанию 50.
  • auditLogLevel - максимальный уровень логирования сообщений в базу auditDB. Ниже этого уровня сообщения не будут попадать в auditDB и отображаться в Веб интерфейсе. По умолчанию I.
  • Если параметр является объектом, сервер считает что это настройка для логирования по файлам .js, которые используют функции логирования. Например, объект "lib": {"log": {"logToAudit": false, "file": "logServer.log"}} позволит выводить в лог файл logServer.log логирование из файла lib\log.js. Логирование в auditDB при этом не будет. Или объект "server": {"file": "server.log"} - позволит выводить в файл server.log логирование всех файлов, использующих функции логирования и находящихся в каталоге server\. Если для файла .js не описана настройка логирования, а в файле применяется функция логирования, логирование будет производится в файл из настройки file, по умолчанию log.log. Ниже перечислены параметры объектов:

    • file - имя файла в который будет производится логирование для указанного модуля .js
    • logToConsole - (true|false) выводить или не выводить сообщения на консоль. Умолчание в зависимости от глобальной настройки logToConsole
    • logToAudit - (true|false) выводить или не выводить сообщения в auditDB. Умолчание в зависимости от глобальной настройки logToAudit