We should make our logger PSR-3 compliant, and make all the classes logging something to use this. This is especially useful for unit testing because we could get rid of the static methods, and also for the SAML2 library, which could use our logger or some other instead.
In general, the steps would be:
We should make our logger PSR-3 compliant, and make all the classes logging something to use this. This is especially useful for unit testing because we could get rid of the static methods, and also for the SAML2 library, which could use our logger or some other instead.
In general, the steps would be:
$contextparameter to all the methods defined byPsr\Log\LoggerInterface.\SimpleSAML\Logger::log()method public and make it throw a\Psr\Log\InvalidArgumentExceptionif the log level is unknown.\SimpleSAML\Loggerand use the ones defined byPsr\Log\LogLevelinstead.%optionto{option}. We also need to think how to handle dates, since those have sub-formats using thestrftime()date and time formatting rules. We would probably need to split the log format and the format for dates, and handle replacements manually.Psr\Log\LoggerAwareInterfaceinterface. That is, adding asetLogger()method, and using the internal logger object to log the messages.Psr\Log\LoggerInterfacenon-static (they are static today). This means we need to add a constructor for the Logger. A Singleton approach would probably be the way to go, with a staticgetInstance()method to retrieve a logger that can be passed tosetLogger(). This also cleans the logger initialization we have today, and would allow us to get rid of the logging handlers and have just loggers that extend the basic logging class.\SimpleSAML\Loggerclass extendPsr\Log\AbstractLogger.