Есть ли способ включить / выключить ведение журнала с помощью установки переменной в файле конфигурации в SilverStripe 3.X (CWP 1.8)? - PullRequest
0 голосов
/ 12 февраля 2019

Мы создаем веб-приложение с CWP 1.8, которое находится на SilverStripe 3.6, журнал будет захвачен классом SS_Log с оператором, подобным SS_Log :: log ('Log message', SS_Log :: INFO) ;.Поскольку нам нужно захватывать журнал только для целей отладки при возникновении ошибки, мы хотим сделать регистратор более гибким, чтобы им можно было управлять с помощью переменной в файле конфигурации.Другими словами, нам нужно включить ведение журнала при появлении ошибки и отключить ведение журнала после ее устранения.

Кто-нибудь может дать нам несколько указаний для достижения этой цели?Большое спасибо

SilverStripe 3.6

1 Ответ

0 голосов
/ 15 февраля 2019

TL; DR: использовать серый журнал CWP - там уже все отслеживается.


В журнале есть различные уровни:

class SS_Log
{
    const ERR = Zend_Log::ERR;
    const WARN = Zend_Log::WARN;
    const NOTICE = Zend_Log::NOTICE;
    const INFO = Zend_Log::INFO;
    const DEBUG = Zend_Log::DEBUG;

Эти картынесколько из констант Zend Log .

С CWP вы получаете некоторую запись по умолчанию из коробки:

// Tee logs to syslog to make sure we capture everything regardless of project-specific SS_Log configuration.
SS_Log::add_writer(new \SilverStripe\Auditor\MonologSysLogWriter(), SS_Log::DEBUG, '<=');

Это означает, чтовсе с уровня отладки будет отправлено в системный журнал по умолчанию.Это делается для того, чтобы платформа CWP могла направлять журналы вашего веб-сайта в Graylog ( централизованная система ведения журнала ), к которой вы можете получить доступ с помощью своей учетной записи CWP Dash.

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

  1. define('SS_ERROR_LOG', '/path/to/logfile.log'): будет автоматически настроено для записи с уровней предупреждений в вашжурнальный файл.Это не особенно полезно для вас в контексте CWP, потому что у вас нет доступа к серверу для проверки файлов.
  2. Добавьте свой собственный регистратор и настройте его для отправкижурналы, где вы хотите (например, в этих документах адрес электронной почты).

Если вы хотите включить или отключить это с переменной, у вас действительно есть возможность добавить или удалить пользовательский код,поскольку CWP не дает вам возможности настраивать переменные среды.Вам нужно выполнить развертывание, чтобы изменить этот код, поэтому вы можете также добавить что-то вроде этого в mysite/_config.php и закомментировать, когда вам это не нужно:

// Log everything and send it to my email address for debugging. Comment out when
// not required.
SS_Log::add_writer(new SS_LogEmailWriter('your-email@example.com'), SS_Log::DEBUG, '<=');

Сновавам придется выполнять развертывание всякий раз, когда вы изменяете этот код.


Теория в стороне, я бы рекомендовал использовать журналы, которые уже доступны в Graylog.

...