是否可以通过在SilverStripe 3.X(CWP 1.8)的配置文件中设置变量来打开/关闭日志记录?

时间:2019-02-12 19:57:47

标签: php silverstripe cwp

我们正在使用SilverStripe 3.6上的CWP 1.8构建Web应用程序,该日志将由SS_Log类捕获,并带有诸如SS_Log :: log('Log message',SS_Log :: INFO);之类的语句。由于仅在发生错误时才需要捕获日志以进行调试,因此我们希望使记录器更加灵活,可以使用配置文件中的变量对其进行控制。换句话说,我们需要在产生错误时打开日志记录,并在错误分类后关闭日志记录。

谁能给我们一些指导以实现这一目标?非常感谢

SilverStripe 3.6

1 个答案:

答案 0 :(得分:1)

TL; DR:使用CWP的Graylog-已经在其中跟踪了所有内容。


日志记录有多种级别:

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;

这些映射到the Zend Log constants中的一些。

使用CWP,您可以立即使用some default logging

// 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, '<=');

这意味着默认情况下,调试级别的所有内容都将发送到syslog。这样,CWP平台可以将您的网站日志传送到Graylogthe centralised logging system)中,您可以使用CWP Dash帐户进行访问。

如果您还需要额外的日志记录,则可以通过以下两种方式之一进行配置:

  1. define('SS_ERROR_LOG', '/path/to/logfile.log'):将automatically configured从警告级别写入日志文件。在CWP上下文中,这对您不是特别有用,因为您无权访问服务器来检查文件。
  2. Add your own custom logger并将其配置为将日志发送到您想要的任何位置(这些文档中的示例是电子邮件地址)。

如果要启用或禁用此变量,则只能选择添加或删除自定义代码,因为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中已经可用的日志。