有没有办法在SilverStripe 3.X(CWP 1.8)的配置文件中设置变量来打开/关闭日志记录?

问题描述 投票:0回答:1

我们正在使用CWS 1.8构建一个Web应用程序,它位于SilverStripe 3.6上,日志将被SS_Log类捕获,语句类似于SS_Log :: log('Log message',SS_Log :: INFO);.由于我们只需要在发生错误时捕获日志以进行调试,因此我们希望使记录器更加灵活,以便可以使用配置文件中的变量来控制它。换句话说,我们需要在出现错误时打开日志记录,并在错误排序后关闭日志记录。

任何人都可以给我们一些指导来实现这一目标非常感谢

SilverStripe 3.6

php silverstripe cwp
1个回答
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('[email protected]'), SS_Log::DEBUG, '<=');

同样,每当您更改此代码时,您都需要进行部署。


除了理论之外,我的建议是使用Graylog中已有的日志。

© www.soinside.com 2019 - 2024. All rights reserved.