我们正在使用SilverStripe 3.6上的CWP 1.8构建Web应用程序,该日志将由SS_Log类捕获,并带有诸如SS_Log :: log('Log message',SS_Log :: INFO);之类的语句。由于仅在发生错误时才需要捕获日志以进行调试,因此我们希望使记录器更加灵活,可以使用配置文件中的变量对其进行控制。换句话说,我们需要在产生错误时打开日志记录,并在错误分类后关闭日志记录。
谁能给我们一些指导以实现这一目标?非常感谢
SilverStripe 3.6
答案 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平台可以将您的网站日志传送到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('your-email@example.com'), SS_Log::DEBUG, '<=');
同样,无论何时更改此代码,都需要进行部署。
除了理论之外,我的建议是使用Graylog中已经可用的日志。