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

Php 是否有办法通过在SilverStripe 3.X(CWP 1.8)的配置文件中设置变量来打开/关闭日志记录?,php,silverstripe,cwp,Php,Silverstripe,Cwp,我们正在使用SilverStripe 3.6上的CWP 1.8构建一个web应用程序,日志将由SS_log类捕获,并使用类似于SS_log::log'log message',SS_log::INFO;的语句;。由于我们只需要在错误发生时捕获日志以进行调试,因此我们希望使日志记录器更灵活,可以使用配置文件中的变量对其进行控制。换句话说,我们需要在产生错误时打开日志记录,并在错误排序后关闭日志记录 有人能给我们一些实现这一目标的方向吗?非常感谢 银条3.6TL;DR:使用CWP的Graylog-所

我们正在使用SilverStripe 3.6上的CWP 1.8构建一个web应用程序,日志将由SS_log类捕获,并使用类似于SS_log::log'log message',SS_log::INFO;的语句;。由于我们只需要在错误发生时捕获日志以进行调试,因此我们希望使日志记录器更灵活,可以使用配置文件中的变量对其进行控制。换句话说,我们需要在产生错误时打开日志记录,并在错误排序后关闭日志记录

有人能给我们一些实现这一目标的方向吗?非常感谢

银条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;
这些映射到了其中的一些

有了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, '<=');
同样,无论何时更改此代码,都需要进行部署


抛开理论不谈,我的建议是使用Graylog中已有的日志。

换句话说,我们需要在产生错误时打开日志记录,并在错误排序后关闭日志记录-这是否在代码的特定部分中,或者,当你在应用程序中发现错误时,你会为整个应用程序打开它,然后再次关闭它?请注意,CWP希望向系统报告日志,以便可以在Graylog实例中跟踪日志Hi Robbie,感谢您的反馈。目前这还不是代码的一部分,但我们想知道是否可以通过某种方式实现这一点。预期的行为是,我们可以更改其中一个配置文件中的配置变量来打开/关闭SS_日志,因为我们只想在遇到用户报告的任何问题时捕获日志。非常感谢Robbie,这非常有帮助。我还有一个问题是关于Graylog中记录的消息,我们正在使用类似于SS_Log::logCUSTOM_消息,SS_Log::INFO;我的问题是定制_消息的长度是多少,它是可配置的吗?谢谢,我不明白,对不起。这部分是动态的——它可以是你想要的任何东西,只要你想让它为困惑而担忧。。。问题是当我们向graylog发送一些长消息时,消息将被截断。听起来这是graylog/Elasticsearch的限制。您根本无法配置CWP Graylog,因此您可能希望使用电子邮件记录器或其他不会截断长消息的工具,或者尽可能将消息拆分为多个区块。
// 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, '<=');