--- Name: logging --- # Core error logging is built up of a chain containing: # - A top level \ErrorHandler which registers the error service # - A \Logger which acts as the error service # - A \HandlerInterface which handles errors for the logger # - One or more \FormatterInterface which format errors for the handler # # Logging for use outside of core error handling also uses the same implementations, # but is available without the HandlerInterfaces attached SilverStripe\Core\Injector\Injector: SilverStripe\Logging\ErrorHandler: class: SilverStripe\Logging\MonologErrorHandler calls: pushDefaultLogger: [ pushLogger, [ '%$Psr\Log\LoggerInterface' ] ] pushErrorHandler: [ pushLogger, [ '%$Psr\Log\LoggerInterface.errorhandler' ] ] # Default implementation for use as a standard logger. Up to developers to attach their own # handlers Psr\Log\LoggerInterface: type: singleton class: Monolog\Logger constructor: - "error-log" # Core error handling Psr\Log\LoggerInterface.errorhandler: type: singleton class: Monolog\Logger constructor: - "error-handler" calls: pushDisplayErrorHandler: [ pushHandler, [ '%$Monolog\Handler\HandlerInterface' ] ] --- Name: loggingformatters --- SilverStripe\Core\Injector\Injector: # Display detailed information on an error Monolog\Formatter\FormatterInterface.detailed: class: SilverStripe\Logging\DetailedErrorFormatter # Display friendly error messages and suppresses possible disclosure of dev configuration Monolog\Formatter\FormatterInterface.friendly: class: SilverStripe\Logging\DebugViewFriendlyErrorFormatter properties: Title: "There has been an error" Body: "The website server has not been able to respond to your request" --- Name: dev-logging Only: environment: dev --- # Dev handler outputs detailed information including notices SilverStripe\Core\Injector\Injector: Monolog\Handler\HandlerInterface: class: SilverStripe\Logging\HTTPOutputHandler constructor: - "notice" properties: DefaultFormatter: '%$Monolog\Formatter\FormatterInterface.detailed' --- Name: live-logging Except: environment: dev --- # Live handler outputs user-friendly error details, and ignores notices # CLI errors still show full details SilverStripe\Core\Injector\Injector: Monolog\Handler\HandlerInterface: class: SilverStripe\Logging\HTTPOutputHandler constructor: - "error" properties: DefaultFormatter: '%$Monolog\Formatter\FormatterInterface.friendly' CLIFormatter: '%$Monolog\Formatter\FormatterInterface.detailed'