2009-07-18 9 views
4

Je suis en train de configurer la journalisation de l'action utilisateur pour mon site PHP.PHP logs - mysql vs fichier

Recommanderiez-vous de les stocker dans mysql ou dans des fichiers texte/log?

Répondre

5

dépend de ce que vous voulez faire avec ceux-ci, je dirais:

  • Si vous avez besoin d'obtenir des données à partir des journaux, de les stocker dans MySQL pourrait aider
  • Si vous avez seulement besoin d'avoir quelques données que vous utilisez presque jamais (mais besoin en cas de quelque chose d'illégal est fait sur votre site, ou des trucs comme ça), un fichier peut être assez

pour ne pas ralentir les choses trop, vous pouvez aussi utiliser les deux (je l'ai utilisé sur certains sites avec un peu de trafic, w là, il aurait été sage de stocker des données dans DB immediat):

  • pendant la journée, stocker les journaux dans un fichier
  • et une fois par jour (ou une fois par heure, vous voyez l'idée) , utilisez un lot pour analyser ces fichiers et placez les données dans la base de données

De cette façon, vous n'insérez pas de données dans DB tout le temps; et vous pouvez (à condition qu'un jour ou une heure se soit écoulé) faire toutes les requêtes dont vous avez besoin

+1

En fonction de la conception de votre application, l'ouverture d'un fichier et l'écriture sur celui-ci peuvent ne pas être beaucoup plus rapides que de faire une requête de base de données sur une connexion déjà établie. – n3rd

+0

en effet; dépend également de la charge du serveur DB, je suppose que –

+0

J'ajouterais simplement que, pour de meilleurs résultats, si vos fonctions de journalisation écrivent dans une base de données, vous devriez aussi avoir un repli de sorte que, si la connexion à la base de données échoue, les logs écrit dans un fichier plat. Sinon, votre site/application peut échouer et, comme vos seuls journaux sont dans la base de données, si cela échoue, vous n'obtenez rien. –

0

Je recommanderais MySQL car il est alors plus facile d'afficher la connexion par exemple une zone administrative. Vous pouvez ensuite définir des indicateurs différents, c'est-à-dire des niveaux d'erreur, et filtrer dans le journal pour trouver des éléments intéressants. En outre, vous pouvez facilement baser une fonction de statistiques sur ces données, beaucoup plus facile que dans les fichiers journaux. Mais je suppose que cela dépend de la façon dont vous devriez utiliser votre journal, et par qui ils devraient être utilisés. fichiers journaux bruts sont un peu geeks :)

1

Je recommanderais d'utiliser quelque chose comme Zend_Log pour faire abstraction de la consignation 'physique' réelle. De cette façon, vous pouvez toujours changer de backend très facilement, au cas où votre situation changerait pour une raison ou une autre.

0

La plupart des outils d'analyse de journal ont besoin d'un fichier journal brut pour analyser. Si vous regardez les logs eux-mêmes, un db pourrait être meilleur (avec les conditions pascal dites). Mais si vous envisagez de faire une analyse réelle, il sera plus facile d'utiliser les fichiers journaux.