Logs

Logs exported procedure

The logs functionaliy is intended for logging information during the execution of stored procedures.

To start a log of a specific activity:

Base_Logs_Prime( $Sid, @CALL_ID, "DEBUG", "Proc_name", "Message" );

Append later log messages associated with that call.

Base_Logs_Append( $Sid, @CALL_ID, "DEBUG", "Proc_name", "Message" );

Exported Procedures

base_logs

DROP   PROCEDURE Base_Logs;
DELIMITER //
CREATE PROCEDURE Base_Logs
(
    $sid           TEXT,
    $AFTER_LOG_ID  INT
)
SQL SECURITY INVOKER
COMMENT 'EXPORTABLE'
BEGIN

    CALL _Base_Users_Authorise_Sessionid( $sid, @email, @USER, @idtype );

    IF NOT( "ADMIN" = @idtype ) THEN

        CALL Notice( 'Base_Logs: INVALID_AUTHORISATION' );

    ELSEIF $AFTER_LOG_ID THEN

        SELECT   *
        FROM     base_logs
        WHERE    $AFTER_LOG_ID < LOG_ID
        ORDER BY LOG_ID
        LIMIT    50000;

    ELSE

        SELECT *
        FROM
        (
            SELECT   *
            FROM     base_logs
            ORDER BY LOG_ID DESC
            LIMIT    50000

        ) AS S1
        ORDER BY CALL_ID, LOG_ID;

    END IF;

END
//
DELIMITER ;
Logs Internal procedures

base_logs_prime

DROP   PROCEDURE _Base_Logs_Prime;
DELIMITER //
CREATE PROCEDURE _Base_Logs_Prime
(
    $sid        TEXT,
INOUT
    $CALL_ID    INT,
    $level      CHAR(20),
    $source     TEXT,
    $message    TEXT
)
SQL SECURITY INVOKER
BEGIN

    SELECT MAX( CALL_ID ) INTO $CALL_ID FROM base_logs;

    IF ISNULL( $CALL_ID ) THEN
        SET $CALL_ID = 0;
    END IF;

    SET $CALL_ID = $CALL_ID + 1;

    INSERT INTO base_logs
      (  LOG_ID,  CALL_ID,  sessionid, logged,  level,  source,  message )
    VALUES
      (       0, $CALL_ID,       $sid,  NOW(), $level, $source, $message );

END
//
DELIMITER ;

base_logs_append

DROP   PROCEDURE _Base_Logs_Append;
DELIMITER //
CREATE PROCEDURE _Base_Logs_Append
(
  $sid           TEXT,
  $CALL_ID       INT,
  $level         CHAR(20),
  $source        TEXT,
  $message       TEXT
)
SQL SECURITY INVOKER
BEGIN

    IF NOT $CALL_ID THEN

        CALL _Base_Logs_Prime( $sid, $CALL_ID, $level, $source_message );

    END IF;

    INSERT INTO base_logs
    (  LOG_ID,  CALL_ID,  sessionid,  logged,  level,  source,  message )
    VALUES
    (       0, $CALL_ID,       $sid,   NOW(), $level, $source, $message );

END
//
DELIMITER ;