Je ne pense pas que cela dépend du type d'application: la journalisation est utile dans toutes les applications (non triviales). Certes, je suppose que cela peut être plus utile dans certaines applications que dans d’autres, mais je ne pense pas que ce soit toujours inutile .
En particulier, dans le cas d’une erreur, une trace de pile vous indiquera l’état du programme au point exact de l’échec, mais vous avez très peu d’indices sur l’état juste avant l’erreur. Ces informations pourraient être très utiles pour dépister le problème, et la journalisation peut en fournir un aperçu utile. Je pense que c'est quelque chose dont tous les programmes, sauf le plus trivial, peuvent bénéficier.
Une autre utilisation de la journalisation, qui peut ne pas être utile pour tous les programmes, est l'analyse statistique. Par exemple, votre serveur Web enregistre généralement chaque demande reçue, puis de nombreux outils permettent d'analyser ces journaux et de générer des graphiques de vos heures de pointe, de vos pages les plus populaires, etc. Vous pouvez utiliser ces données pour planifier la capacité ("ai-je besoin d'un serveur plus grand?"), Etc.
Dans la plupart des tâches du serveur, la journalisation est cruciale, car l’administrateur n’est généralement pas présent lorsqu’il se produit, il doit donc vérifier après coup.
Mais un gars de Google m'a dit une fois que leurs processus de serveur ne se connectaient pas; au lieu de cela, ils sont «instrumentés»; cela signifie que chaque processus a des crochets ou des ports (il n'a pas précisé les mécanismes) où d'autres processus peuvent verrouiller pour demander des paramètres et des statistiques. Ce sont ces processus de surveillance qui stockent beaucoup d'éléments dans les journaux. L'avantage est que les informations qu'ils obtiennent ne sont pas "ouvrir un fichier", "écrire ceci", "extraire cela"; ils obtiennent des choses comme "45 453 fichiers ouverts", "653 clients du service X", "réponse moyenne de 344 ms pour la requête Y"
C’est certainement une approche différente, et que j’ai tendance à garder à l’esprit lorsque je garde mes systèmes, même si leur taille est légèrement inférieure.
la source
Je viens d'une application Winforms N-Tiered qui a tout enregistré.
Ce n'était pas très utile.
Bien sûr, la journalisation des exceptions est excellente; mais pourquoi les connecter à la machine du client alors que vous pouvez simplement envoyer l'exception à l'équipe de développement?
Les informations de journalisation se transforment facilement en une dépendance dont la valeur est rarement justifiée. Pour chaque situation où vous pouvez vous connecter gratuitement, il est préférable de collecter des informations ciblées et de les envoyer où vous le souhaitez.
la source
Capturer des informations sur les exceptions est indispensable car cela peut être très utile dans une certaine mesure. Mais parfois, les informations sur les exceptions ne suffisent pas, en particulier si l'utilisateur / le client de l'application ne peut pas signaler une erreur avec les informations appropriées.
La journalisation est-elle limitée à la capture d'informations d'erreur?
Dans mon cas (application Web), je note toujours quelle page est visitée, quand, sur quoi on clique, où se trouve l'adresse IP et le navigateur, etc. et besoin d'optimisation. je peux donc dire que je me connecte autant que possible.
Au début, je ne savais pas à quel point ce serait important. mais apparemment, cela est très utile dans beaucoup de choses (autres que le débogage):
Je pense que la journalisation peut devenir plus importante si nous aimons y extraire des informations statistiques.
la source
Je suis développeur dans une entreprise dont les produits sont déployés à l'étranger. Lorsqu'une équipe d'assistance intervient à propos d'une définition du problème, mes seuls outils de diagnostic sont mes fichiers journaux et une copie de la base de données du client. À l'aide de la base de données et de mon environnement de développement, j'ai la possibilité de reproduire le cas erroné, car je consigne les données entrantes dans mon module et les actions associées. Si je peux reproduire l'erreur à l'aide des données que je rassemble, je peux le corriger avec le débogage. Si je n'avais pas de fichier journal, je devrais alors dépendre de la description du client ou de l'équipe de support technique de ce qui se passe dans quel cas (ce qui risque fortement d'induire en erreur).
Deuxièmement, la journalisation me donne la possibilité de détecter les goulots d'étranglement de mon module sur le site déployé, car je consigne la date et l'heure de certaines actions et je peux ensuite voir quelle action consomme combien de temps.
En plus de cela, supposons que notre solution se compose de 6 modules et que des journaux d’erreurs apparaissent dans mes fichiers journaux concernant les délais d’expiration des bases de données. Si ces erreurs sont également consignées dans 5 des autres modules, la probabilité qu'il s'agisse d'un problème lié au serveur SQL augmente. Si cela n'est consigné que dans mon module, la probabilité que mes requêtes soient boguées augmente. Je pense que ce genre de choses sont des indicateurs utiles.
Le type de données que je vois dans mes fichiers journaux dépend de la configuration du niveau de journal. S'il s'agit d'un nouveau produit, nous définissons le niveau de journalisation sur "Tout" pour collecter autant de données que possible. Mais lorsque nous améliorons le produit, nous préférons peut-être conserver le niveau de journalisation à "Erreur" afin de consigner uniquement l'erreur, mais pas les journaux du niveau d'informations, etc.
la source
La journalisation est utile pour les informations que vous ne pouvez pas obtenir par d'autres programmes:
Remarque: Vous voulez au moins DEUX fichiers journaux.
L'INFO est toujours allumé. Le DEBUG est activé en cas de besoin.
Ecrivez le code de journalisation en prévoyant qu'un jour, vous devrez peut-être déboguer une situation où TOUT est le fichier journal que vous avez, et le faire correctement peut être la différence entre un licenciement et une promotion.
Pour un kilomètre supplémentaire, demandez à tous les appels de fonction d’ajouter leurs paramètres à n’importe quelle trace de pile, en Java avec
Cette approche améliore essentiellement votre pile d'appels avec des valeurs de paramètre et peut vous permettre d'analyser la situation simplement avec le suivi de la pile et de ne pas avoir à voir les fichiers journaux.
la source
Je recommanderais également que toutes les applications non triviales utilisent une journalisation à plusieurs niveaux.
Pour les raisons que d'autres ont mentionnées, il s'agit d'un outil précieux pour résoudre les problèmes liés à l'application.
Dans certains cas, la journalisation est essentielle, par exemple dans les applications financières et les autres domaines nécessitant des journaux d'activité, pour des raisons de sécurité, de métrique d'utilisation et d'audit.
la source
Cela dépend très certainement du type de système que vous construisez.
Si vous écrivez une application de bureau autonome, telle qu'un traitement de texte, vous n'avez probablement pas besoin de journalisation.
Si vous écrivez un système intégré, vous ne pouvez pas vivre sans vous connecter. Sinon, lorsque votre appareil intégré se fige, vous ne savez pas pourquoi. Vous devez également vous connecter chaque fois que votre système implique plusieurs processus ou plusieurs machines physiques communiquant entre elles. Encore une fois, lorsque le système se bloque, vous devez savoir quelle partie de celui-ci est décédé quand et pourquoi. Vous devez pouvoir comparer les journaux pour déterminer si les données ont été transmises d’un processus à l’autre. De même, vous devez vous connecter chaque fois que votre système doit fonctionner pendant de longues périodes sans grande interaction directe de l'utilisateur.
la source
La journalisation est toujours utile. Mais lors de la mise en œuvre, sachez que ce n'est pas nécessairement vous qui allez lire les journaux. Peut-être est-ce une sorte d'administrateur, d'utilisateur final, de client, d'équipe de support, ...
Donc, ne vous connectez pas seulement les stacktraces, mais aussi certaines informations supplémentaires pouvant être interprétées par des non-développeurs. Lorsque votre application est gérée par d'autres groupes, il est également utile d'écrire des codes d'erreur uniques dans vos journaux. Cela pourrait faciliter le support, l'automatisation, ...
Un autre point du point de vue administrateur: pensez à la rotation des journaux.
la source