Salut,
J'ai déjà été confronté au même genre de problématique dans une société e-commerce où j'ai travaillé.. On faisait des log sur les actions utilisateurs mais aussi backoffice (ex : saisie de stock, de produit, de prix, etc ...).
Pour cela on utilisait un petit bout de code comme celui-ci (c'était plus complet mais je n'ai pas accès aux sources :) .. normal) :
Tout d'abord la table SQL (pas besoin de beaucoup d'infos) :
id (INT)
user_id (INT) ForeignKey // Penser à id 0 si utilisateur pas connecté
action (STRING 80) // l'action de l'utilisateur ou endroit où se trouvait (ex : inscription)
comment (STRING 255) // Petit commentaire de ce qui s'est passé (ex : inscription de l'utilisateur id:504)
ip (STRING 40) // Si utilisateur non connecté (ou connecté)
datetime (STRING 12) // timestamp du log
Une classe Php pour y enregistrer les logs :
class Log {
public static function write($action, $comment = '') {
global $db, $user;
// implique d'avoir au préalable une variable globale '$db' contenant une instance de classe de requêtage sql
// $user : instance d'un utilisateur
$user_id = ($user) ? $user->id : 0;
$user_ip = isset($_SERVER"REMOTE_ADDR"]) ? $_SERVER"REMOTE_ADDR"] : '';
$db->insert('Logs', array( // ou faire un mysql_query ...
'user_id' => $user_id,
'action' => $action,
'comment' => $comment,
'ip' => $user_ip,
'datetime' => time(),
));
}
}
Pour l'appeler :
Log::write("inscription", "inscription de l'utilisateur id:$user_id");
En espérant que cela puisse t'aider...
EDIT :
Tu peux aussi ajouter un champ 'type' dans la table afin d'y enregistrer le niveau d'alerte (ex : alert, warning, success, ..).
Ceci te permettra de te créer un tableau de synthèse des logs selon leurs niveau d'importance...
Et l'appel se ferait comme ceci :
Log::write("error", "action", "commentaire");