diff --git "a/include/class-cli\\Log.php" "b/include/class-cli\\Log.php" index d2a8869..4027041 100644 --- "a/include/class-cli\\Log.php" +++ "b/include/class-cli\\Log.php" @@ -1,138 +1,188 @@ . # Command line interface namespace cli; /** * Show log messages (when in CLI) */ class Log { /** * Normal information messages flag * * @var bool */ public static $INFO = true; /** * Verbose information messages flag * * @var bool */ public static $DEBUG = false; /** * Verbose sensitive information messages flag * * @var bool */ public static $SENSITIVE = false; + /** + * + */ + public static $NO_STDOUT = null; + + /** + * Format in use when we are in command line mode + * + * Order of arguments: + * Date, Type, Message + * + * @var string + */ + public static $FORMAT_COMMAND_LINE = '[%1$s][%2$s] %3$s'; + + /** + * Format in use when we are in webserver mode + * + * Order of arguments: + * Date, Type, Message + * + * As default the Date is not printed because usually + * Apache or Nginx already append it. + * + * @var string + */ + public static $FORMAT_WEBSERVER = '%2$s %3$s'; + + /** + * Format used to eventually print dates in the log + * + * @var string + */ + public static $DATE_FORMAT = 'Y-m-d H:i:s'; + /** * Show a warning * * Use it for errors that can be solved without interaction * * @param $message string * @param $args array arguments */ public static function warn( $message, $args = [] ) { self::log( 'WARN', $message, $args ); } /** * Show a debug information * * Use it to show actions under the hood * * @param $message string * @param $args array arguments */ public static function info( $message, $args = [] ) { if( self::$INFO ) { self::log( 'INFO', $message, $args ); } } /** * Show a debug information * * Use it to show actions under the hood * * @param $message string * @param $args array arguments */ public static function debug( $message, $args = [] ) { if( self::$DEBUG ) { self::log( 'DEBUG', $message, $args ); } } /** * Show an error * * @param $message string * @param $args array arguments */ public static function error( $message, $args = [] ) { self::log( 'ERROR', $message, $args ); } /** * Show a debug information message that contains sensitive informations * * @param $message_sensitive Message with sensitive informations * @param $message_unsensitive Message secure to be shown * @param $args array arguments */ public static function sensitive( $message_sensitive, $message_unsensitive, $args = [] ) { if( self::$DEBUG ) { if( self::$SENSITIVE ) { self::log( '!DEBUG!', $message_sensitive, $args ); } elseif( $message_unsensitive ) { self::log( '!DEBUG!', "$message_unsensitive [SENSITIVE DATA HIDDEN]", $args ); } } } /** * Show a message * * @param $type string * @param $message string * @param $args array arguments */ public static function log( $type, $message, $args = [] ) { // default arguments $args = array_replace( [ 'newline' => true, ], $args ); - if( $args[ 'newline' ] ) { + // eventually end with a newline + if( $args['newline'] ) { $message .= "\n"; } - if( isset( $_SERVER['argv'] ) ) { - $date = date( 'Y-m-d H:i:s' ); - printf( "[%s][%s] %s", $date, $type, $message ); + + // check if we are in command line mode + $cli = isset( $_SERVER['argv'] ); + + // are we in command line? + $format = $cli + ? self::$FORMAT_COMMAND_LINE + : self::$FORMAT_WEBSERVER; + + // in command line print a nice format with a date + $date = date( self::$DATE_FORMAT ); + $msg = sprintf( $format, $date, $type, $message ); + + if( $cli ) { + // in command line, just print everything to stdout + echo $msg; } else { - error_log( "$type $message" ); + // in a webserver, just print everything in the syslog + error_log( $msg ); } } }