Application Logging

Le texte français est donné à la suite.

Recommendation

Scope of the recommendation: Application Logging
Out of Scope: IIS Logging, Auditing
Definition: An application log is a file of events that are recorded by a software application. It contains errors, informational events and warnings. The format and content of an application log are determined by the developer of the software program, rather than the operating system.
Usage: Logging/Recording application events to accommodate trouble shooting, provide health status (for the application) or preventing an issue from becoming a larger problem.
Alternative use: Alerting technical groups of specific event when it occurs.

Top 5 Best Practices

What to log

Debug logs typically report application events that are useful when diagnosing a problem. Investigations into application failures need the “W” words: Who, What, When, Where and Why:

Suggested Log Types

How to log

Avoid implementing any in-house logging mechanism. Existing library are very mature and offer a wide range of granularities and configuration options. We recommend the use of existing Logging libraries

When to Log

In all verticals using appropriate log levels based on the analysis needs

Where to send log data

At the moment there is no setup available to send our logs. We think that this could be a very good initiative for IITB.

The relational databases are not the best place to send log data. Time-series databases (TSDB) are much more efficient at storing log data. Open-source TSDB such as InfluxDB are much better suited to storing log data than relational databases.

The ELK stack is a popular solution for log aggregation. ELK is an acronym that stands for Elasticsearch, Logstash, and Kibana.
Elasticsearch is a fast search engine that is used to find data in large datasets.
Logstash is a data pipeline platform that will collect log data from many sources and feed it to a single persistence target.
Kibana is a web-based data visualizer and search engine that integrates with Elasticsearch.

Log File Location

The following locations are set by SADE and are the departments standard

  E:\\WebLogs\[SADE-Vertical]\[application abbreviation]\[application sub folders if required]
 E:\\WebLogs\\[application abbreviation]\[application sub folders if required]

Note from SADE: “If the log directory structure does not exist as stated above, the application should take the initiative to create it (on the fly). Understanding that the directory name and structure should be defined in the Web.Config”

Log File Content

File name

Ex: APP_NAME_20190930_MLWB200.log

Content Data will be determined by the requirement and need. We recommend including the following data elements for each log record:

Sensitive content

How do you access the logs?

For apps hosted in Intranet, use Shared Folders to the log file location set by SADE.
For apps hosted in OPS or DMZ (Internet), the accessibility of the log files is on request only. 2 options exist:


Texte français:

Recommandation

Portée de la recommandation : Journalisation des applications
Hors portée : Journalisation IIS, Audit
Définition : Un journal d’application est un fichier d’événements enregistrés par une application logicielle. Il contient des erreurs, des événements d’information et des avertissements. Le format et le contenu d’un journal d’application sont déterminés par le développeur du logiciel plutôt que par le système d’exploitation.
Utilisation : Journaliser/enregistrer les événements d’application pour faciliter le dépannage, fournir l’état de santé (de l’application) ou éviter qu’un incident ne s’aggrave.
Autre utilisation : Alerter les groupes techniques lorsqu’un événement spécifique survient.

5 meilleures pratiques

Quoi journaliser

Les journaux de débogage rapportent généralement des événements d’application utiles pour diagnostiquer un problème. Les enquêtes sur les défaillances d’application nécessitent de répondre aux questions : Qui, Quoi, Quand, Où et Pourquoi :

Types de journaux suggérés

Comment journaliser

Évitez d’implémenter des mécanismes de journalisation maison. Les bibliothèques existantes sont très matures et offrent une grande variété de granularités et d’options de configuration. Nous recommandons l’utilisation de bibliothèques de journalisation existantes :

Quand journaliser

Dans toutes les branches applicatives en utilisant des niveaux de journalisation appropriés selon les besoins d’analyse :

Où envoyer les données de journalisation

Pour le moment, aucune infrastructure n’est disponible pour centraliser nos journaux. Nous pensons que cela pourrait être une excellente initiative pour la DGIIT.

Les bases de données relationnelles ne sont pas le meilleur endroit pour envoyer des données de journaux. Les bases de données de séries temporelles (TSDB) sont beaucoup plus efficaces pour stocker ces données. Les TSDB à code source ouvert telles qu’InfluxDB sont bien mieux adaptées au stockage de données de journaux que les bases de données relationnelles.

La suite ELK est une solution populaire pour l’agrégation de journaux. ELK est un acronyme signifiant Elasticsearch, Logstash et Kibana.
Elasticsearch est un moteur de recherche rapide utilisé pour trouver des données dans de grands ensembles de données.
Logstash est une plateforme de pipeline de données qui recueille des données de journaux provenant de nombreuses sources et les transmet à une cible de persistance unique.
Kibana est un outil de visualisation de données et un moteur de recherche web qui s’intègre à Elasticsearch.

Emplacement des fichiers journaux

Les emplacements suivants sont définis par la SADE et constituent la norme ministérielle :

  E:\\WebLogs\[SADE-Vertical]\[abréviation application]\[sous-dossiers application au besoin]
 E:\\WebLogs\\[abréviation application]\[sous-dossiers application au besoin]

Note de la SADE : « Si la structure de répertoires des journaux n’existe pas telle qu’indiquée ci-dessus, l’application doit prendre l’initiative de la créer (à la volée). Il est entendu que le nom et la structure du répertoire doivent être définis dans le Web.Config »

Contenu du fichier journal

Nom de fichier

Ex : APP_NAME_20190930_MLWB200.log

Les données du contenu seront déterminées selon les exigences et les besoins. Nous recommandons d’inclure les éléments de données suivants pour chaque enregistrement de journal :

Contenu sensible

Comment accéder aux journaux ?

Pour les applications hébergées sur l’Intranet, utilisez les dossiers partagés vers l’emplacement des fichiers journaux défini par la SADE.
Pour les applications hébergées en OPS ou en DMZ (Internet), l’accès aux fichiers journaux se fait uniquement sur demande. 2 options existent :