При первом запуске драйвер создает файл с настройками логирования в рабочем каталоге библиотеки:
- на Windows - %APPDATA%/ATOL/drivers10/fptr10_log.properties
- на Linux - ${HOME}/.atol/drivers10/fptr10_log.properties
- на Android - рабочий каталог приложения (/Android/data/<идентификатор_приложения>/files/drivers10/fptr10_log.properties)
- на iOS - подкаталог в bundle-а приложения, в каталоге Documents (<идентификатор приложения.app>/Documents/drivers10/fptr10_log.properties)
Ниже представлен состав этого файла (${WORK_DIRECTORY} - рабочий каталог библиотеки, формируется в зависимости от ОС, см. выше):
log4cpp.rootCategory=ERROR, file
log4cpp.category.FiscalPrinter=INFO, file
log4cpp.category.Transport=INFO, file
log4cpp.category.EthernetOverTransport=INFO, file
log4cpp.category.DeviceDebug=INFO, file
log4cpp.appender.console=ConsoleAppender
log4cpp.appender.console.layout=PatternLayout
log4cpp.appender.console.layout.ConversionPattern=%d{%Y.%m.%d %H:%M:%S.%l} T:%t %-5p [%c] %m%n
log4cpp.appender.file=DailyRollingFileAppender
log4cpp.appender.file.fileName=${WORK_DIRECTORY}/logs/fptr10.log
log4cpp.appender.file.maxDaysKeep=14
log4cpp.appender.file.layout=PatternLayout
log4cpp.appender.file.layout.ConversionPattern=%d{%Y.%m.%d %H:%M:%S.%l} T:%t %-5p [%c] %m%n
log4cpp.appender.ofd=DailyRollingFileAppender
log4cpp.appender.ofd.fileName=${WORK_DIRECTORY}/logs/ofd.log
log4cpp.appender.ofd.maxDaysKeep=14
log4cpp.appender.ofd.layout=PatternLayout
log4cpp.appender.ofd.layout.ConversionPattern=%d{%Y.%m.%d %H:%M:%S.%l} T:%t %-5p [%c] %m%n
log4cpp.appender.device_debug=DailyRollingFileAppender
log4cpp.appender.device_debug.fileName=${WORK_DIRECTORY}/logs/device_debug.log
log4cpp.appender.device_debug.maxDaysKeep=14
log4cpp.appender.device_debug.layout=PatternLayout
log4cpp.appender.device_debug.layout.ConversionPattern=%d{%Y.%m.%d %H:%M:%S.%l} T:%t %-5p [%c] %m%n
log4cpp.appender.fptr1C=DailyRollingFileAppender
log4cpp.appender.fptr1C.fileName=${WORK_DIRECTORY}/logs/fptr1C.log
log4cpp.appender.fptr1C.maxDaysKeep=14
log4cpp.appender.fptr1C.layout=PatternLayout
log4cpp.appender.fptr1C.layout.ConversionPattern=%d{%Y.%m.%d %H:%M:%S.%l} T:%t %-5p [%c] %m%n
На ОС Android ко всем категориям добавляется LogCatAppender:
log4cpp.appender.logcat=LogCatAppender
log4cpp.appender.logcat.layout=PatternLayout
log4cpp.appender.logcat.layout.ConversionPattern=%d{%Y.%m.%d %H:%M:%S.%l} T:%t %-5p [%c] %m%n
На ОС iOS ко всем категориям добавляется NSLogAppender:
log4cpp.appender.nslog=NSLogAppender
log4cpp.appender.nslog.layout=PatternLayout
log4cpp.appender.nslog.layout.ConversionPattern=%d{%Y.%m.%d %H:%M:%S.%l} T:%t %-5p [%c] %m%n
Для логирования используется библиотека log4cpp, описание файла настроек можно прочитать на ее сайте (http://log4cpp.sourceforge.net/). Здесь будет приведено короткое описание настройки, а также список тегов (категорий логов), которые библиотека логирует.
С помощью log4cpp, библиотека позволяет логировать информацию следующим образом:
- логирование в файл. Для этого служат RollingFileAppender и DailyRollingFileAppender;
- логирование на консоль (может быть полезно в процессе разработки). Это позволяет сделать ConsoleAppender;
- логирование в logcat (только Android). Для этого нужен LogCatAppender;
- логирование в Apple System Log (только iOS). Для этого нужен NSLogAppender.
Для каждой категории можно настроить подробность логирования. На данный момент поддерживаются следующие:
- ERROR - логировать только ошибки;
- INFO - базовое логирование;
- DEBUG - расширенное логирование.
В случае с категориями Transport и FiscalPrinter на уровне INFO в логе фиксируется базовая информация об обмене с ККТ, а на уровне DEBUG - подробная информация об обмене. Для категорий, отвечающих за каналы обмена (USB, Serial и т.п.) не рекомендуется влючать логирования без особой надобности, т.к. это может замедлить и нарушить таймауты обмена с ККТ.
Специфичные настройки каждого из Appender-ов представлены в таблице ниже:
Appender-ы
Appender | Описание | Параметры | Описание параметров |
RollingFileAppender | Логирование в файл с ротацией по размеру | fileName | Путь к файлу лога |
maxFileSize | Максимальный размер файла лога до ротации |
maxBackupIndex | Максимальное количество файлов логов
|
DailyRollingFileAppender | Логирование в файл с ротацией по времени (раз в день, в полночь) | fileName | Путь к файлу лога |
maxDaysKeep | Количество файлов для хранения
|
ConsoleAppender | Логирование в консоль (stdout) | |
|
LogCatAppender | Логирование в logcat | |
|
NSLogAppender | Логирование в Apple System Log | | |
Дополнительно, к каждому их Appender-ов можно добавить формат выводимых строк лога - Layout. Тип Layout-а нужно записать в параметр layout Appender-а и указать его настройки. Ниже приведено описание формата PatternLayout:
- %% - знак процента;
- %c - тег (категория);
- %d - дата и время
Формат даты: за символом даты (%d) может следовать ее формат, указанный между фигурными скобками ({}). Например, %d{%H:%M:%S,%l} или %d{%d %m %Y %H:%M:%S,%l}. Если формат не указан используется следующий: "Wed Jan 02 02:03:55 1980". Формат даты соответствует функции форматирования strftime из ANSI С, с единственным дополнением - %l, который добавляет в дату миллисекунды;
- %m - сообщение;
- %n - символ(ы) переноса на новую строку;
- %R - секунды с 01.01.1970 (unixtime);
- %t - идентификатор потока;
- %P - идентификатор процесса.
Поддерживаемые теги (категории) для настройки:
- FiscalPrinter - высокоуровневый лог работы с библиотекой;
- Transport - лог обмена библиотеки с ККТ;
- EthernetOverTransport - высокоуровневый лог канала обмена ККТ с внешними ресурсами в Интернет через драйвер (например, с ОФД);
- DeviceDebug - отладочный вывод ККТ;
- 1С - лог интеграционного компонента 1С;
- USB - низкоуровненый лог обмена по каналу USB (Linux, Android);
- COM - низкоуровненый лог обмена по RS232 / VCOM / TTY;
- TCP - низкоуровненый лог обмена по TCP/IP;
- Предупреждения
- В случае логирования в файл на iOS пути указываются относительно каталога Documents.