TYPO3: Как настроить соответствие $ GLOBALS ['TYPO3_CONF_VARS'] ['LOG'] - PullRequest
3 голосов
/ 06 мая 2020

Я пытаюсь настроить ведение журнала для одного настраиваемого класса в TYPO3, используя конфигурацию структуры ведения журнала, как описано здесь:

https://docs.typo3.org/m/typo3/reference-coreapi/8.7/en-us/ApiOverview/Logging/Configuration/Index.html

Я хочу для настройки ведения журнала для каждого класса в

\ Aip \ Taglialacoda \ Task \

Без конфигурации сообщения журнала записываются в файл журнала в typo3temp \ var \ log

I сделал несколько подобных попыток:

$GLOBALS['TYPO3_CONF_VARS']['LOG']['Aip']['Taglialacoda']['Task']['writerConfiguration'] = [
    TYPO3\CMS\Core\Log\LogLevel::INFO => [
        TYPO3\CMS\Core\Log\Writer\SyslogWriter::class => [],
    ]
];

Результат всегда один: я не могу найти нигде зарегистрированные сообщения. Написанный мной класс является задачей, поэтому он расширяет AbstractTask и имеет собственное средство ведения журнала. По этой причине я создал еще один регистратор (я не хочу, чтобы каждая задача записывалась в SYS LOG). Как я уже сказал, без конфигурации новый регистратор записывает в файл журнала. При добавлении конфигурации с ошибками класс генерирует исключение (поэтому конфигурация принимается во внимание). При использовании конфигурации выше сообщение журнала исчезает.

Ответы [ 2 ]

0 голосов
/ 09 мая 2020

Сводка:

Насколько я знаю, вам не повезло, если вы хотите войти с помощью фреймворка журналирования в таблицу sys_log DB и прочитать это в модуле BE «Log» с помощью только основные функции.

Либо:

  1. Используйте расширение « журналы » (исходный код на GitHub ) ( отказ от ответственности: это стороннее расширение, которое было «заархивировано» на GitHub, я не знаю, будет ли оно поддерживаться и как долго). Он создает собственный внутренний модуль «Журнал» в «Инструментах администратора».

  2. Использовать файл журнала или журнал регистрации

  3. Напишите свой собственный LogWriter, который будет записывать в таблицу sys_log в правильном формате, который читается модулем BE "Журнал".


Ваша конфигурация выглядит хорошо (в целом), но не будет работать должным образом.

Вы можете сначала убедиться, что вы знаете, куда SyslogWriter будет писать. Это объясняется в документации . SyslogWriter не будет писать в таблицу базы данных "sys_log", как можно было бы ожидать, а через syslog в системный журнал. Где это закончится, зависит от вашей конфигурации. Возможно, вы захотите проверить свой / var / log / messages. Вероятно, это не то, что вам нужно. Вместо этого используйте FileWriter или DatabaseWriter.

Однако, если вы используете DatabaseWriter , это не будет читаться через модуль «Журнал» в бэкэнде, как указано в документации:

Модуль Admin Tools> Log не адаптирован к записям, записанным DatabaseWriter в таблицу sys_log. Если вы напишете туда такие записи, вы не сможете увидеть их с помощью этого модуля. Совет: есть инструмент для просмотра таких записей в бэкэнде TYPO3 по адресу https://github.com/vertexvaar/logs.

Думаю, поможет, если вы рассматриваете ведение журнала в TYPO3 как 2 отдельных API:

  1. «Старый» способ записи в «sys_log» таблица с помощью writelog () и просмотр ее с помощью модуля «Журнал» в бэкэнде. Это больше не рекомендуется в документации (хотя по-прежнему используется в ядре).
  2. Новый способ ведения журнала с помощью «API ведения журнала» , который может вести журнал в файлы, таблицы базы данных и т. Д. c. а также может быть расширен для ведения журнала другими авторами.

Метод с 1 настраивается с использованием $GLOBALS['TYPO3_CONF_VARS'][SYS][belogErrorReporting]

Итак, как уже упоминалось выше, вам не повезло, если вы хотите войти в систему с помощью среды ведения журнала (2. ) в sys_log и прочтите это в модуле BE «Журнал» только с основными функциями. В списке есть расширение https://github.com/vertexvaar/logs. Другая возможность - создать свой собственный LogWriter, а затем записать в sys_log с помощью writelog () в нем. Таким образом, вы станете более гибкими в будущем.

Что лично мне тоже очень понравилось, так это метод часовой с sentry-typo3 . Возможно, вы захотите взглянуть на это. Но вам нужно установить сторожевой сервер. Но это очень легко сделать (по крайней мере, у меня это сработало из коробки), но, конечно, это зависит от того, где работает ваш сайт.


  • посмотрите в ядре typo3 / sysext / core / Classes / Log / Writer / DatabaseWriter. php Вы увидите, что по умолчанию используется "sys_log" , но требуется другая схема (как также упоминается в документации ). На мой взгляд, в этом нет никакого смысла, но так оно и есть.
  • посмотрите в ядре typo3 / sysext / core / Classes / Log / Writer / SyslogWriter. php . Вы увидите, что ведение журнала (в writeLog ()) выполняется с помощью функции PHP syslog . Это не знает о регистрации TYPO3 в sys_log.
  • посмотрите основные обработчики ошибок и исключений, например, typo3 / sysext / core / Classes / Error / AbstractExceptionHandler. php, и вы увидите, что ведение журнала выполняется через структуру ведения журнала ($this->logger) и от до sys_log.
0 голосов
/ 06 мая 2020

это для входа в ваши сообщения журнала в таблице журнала (вы можете найти список журналов в бэкэнде), если вы хотите 'записать в файл, используйте filewrite: https://docs.typo3.org/m/typo3/reference-coreapi/8.7/en-us/ApiOverview/Logging/Writers/Index.html#filewriter

...