X Tutup
Skip to content

PSR-3 compliant logger #371

@jaimeperez

Description

@jaimeperez

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:

  • Add a $context parameter to all the methods defined by Psr\Log\LoggerInterface.
  • Make the \SimpleSAML\Logger::log() method public and make it throw a \Psr\Log\InvalidArgumentException if the log level is unknown.
  • Extract the log levels definition from \SimpleSAML\Logger and use the ones defined by Psr\Log\LogLevel instead.
  • Change the formatting that we have today. This means going from %option to {option}. We also need to think how to handle dates, since those have sub-formats using the strftime() date and time formatting rules. We would probably need to split the log format and the format for dates, and handle replacements manually.
  • Make all the classes logging something to implement the Psr\Log\LoggerAwareInterface interface. That is, adding a setLogger() method, and using the internal logger object to log the messages.
  • Make all the logging methods defined in Psr\Log\LoggerInterface non-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 static getInstance() method to retrieve a logger that can be passed to setLogger(). 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.
  • Make the \SimpleSAML\Logger class extend Psr\Log\AbstractLogger.
  • Exceptions should also be logger-aware, and pass themselves to the logger object when logging something in the context.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      X Tutup