我们正在使用CWS 1.8构建一个Web应用程序,它位于SilverStripe 3.6上,日志将被SS_Log类捕获,语句类似于SS_Log :: log('Log message',SS_Log :: INFO);.由于我们只需要在发生错误时捕获日志以进行调试,因此我们希望使记录器更加灵活,以便可以使用配置文件中的变量来控制它。换句话说,我们需要在出现错误时打开日志记录,并在错误排序后关闭日志记录。
任何人都可以给我们一些指导来实现这一目标非常感谢
SilverStripe 3.6
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平台就可以将您的网站日志传输到Graylog(the centralised logging system),您可以使用CWP Dash帐户访问该日志。
如果您需要额外的日志记录,可以通过以下两种方式之一进行配置:
define('SS_ERROR_LOG', '/path/to/logfile.log')
:这将是automatically configured从警告级别写入您的日志文件。这在CWP的上下文中对您没有特别的用处,因为您无权访问服务器来检查文件。如果要使用变量启用或禁用此功能,您实际上只能选择添加或删除自定义代码,因为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('[email protected]'), SS_Log::DEBUG, '<=');
同样,每当您更改此代码时,您都需要进行部署。
除了理论之外,我的建议是使用Graylog中已有的日志。