Skip to main content
Version: Next

Paramétrage des logs d'ImportDocs

Dans l'outil d'import de document, ImportDocs, on a désormais la liberté de définir des règles de logging.

Par défaut, les logs sont stockés dans un fichier ImportDocs.log, mais il est envisageable de modifier le paramétrage pour faire en sorte que les logs, ou une partie seulement, soient stockés en base de données, envoyés par mail, envoyés dans un flux UDP, etc...

Il est même possible, si dans votre projet d'import vous avez choisi de personnaliser son code C#, d'ajouter vos propre logs

Pour permettre cette souplesse, ImportDocs utilise le framework open-source "NLog" v2.0 (http://nlog-project.org/nlog-2-0-release-notes)

Chemin des fichiers de Configuration NLog

Avant tout, rappelons qu'il est possible d'importer des documents selon 3 modes :

  • avec l'outil ImportDocs.
  • avec la version en ligne de commande d'ImportDocs.
  • avec un agent, configuré dans Process Studio, et exécuté par le service Scheduler de l'application.

Chaque mode correspond à un exécutable, respectivement :

  • PStudio.Administration\ImportDocs.exe,
  • PStudio.Administration\\ImportDocsConsole.exe
  • PStudio.Services\PROFILE_NAME\Avanteam.WindowService.Scheduler.exe (PROFILE_NAME est le nom du profil de votre application)

Chaque exécutable possède son fichier de configuration NLog :

  • PStudio.Administration\ImportDocs.exe.nlog,
  • PStudio.Administration\\ImportDocsConsole.exe.nlog
  • PStudio.Services\PROFILE_NAME\Avanteam.WindowService.Scheduler.exe.nlog

Principes de base

Un fichier de configuration NLog est un fichier XML dont voici un exemple :

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="false">
<targets async="true">
<target name ="file" xsi:type="File" fileName="${basedir}ImportDocs.log" archiveFileName="${basedir}ImportDocs.archive.{#####}.log" archiveNumbering="Sequence" archiveAboveSize="5242880" maxArchiveFiles="10" layout="${date}|${level}|${logger}|${message}|${exception:format=tostring}"/>
</targets>
<rules>
<logger name="*" levels="Trace,Info,Warn,Error,Fatal" writeTo="file"/>
</rules>
</nlog>

Les deux sections importantes à retenir sont :

  • target : pour définir les cibles vers lesquelles envoyer les logs (dans l'exemple ci-dessus, un fichier). Ce peut-être une base de donnée, un serveur SMTP, un flux UDP etc. (cf la liste des valeurs possibles de l'attribut xsi:type).
  • rules : pour définir quel log doit être envoyé vers quelle cible (target). Dans notre exemple, on envoie les logs de tout niveau, sauf "Debug", vers le fichier. Il est possible d'ajouter des filtres. Plus d'information ici : http://nlog-project.org/wiki/Configuration_file et ici : http://nlog-project.org/wiki/Filters.

Ajouter ses propres logs

Dans le code C# personnalisé d'un projet d'import, pour loguer il suffit :

  1. Avant tout, de vérifier la présence (si elle n'est pas là, il faut l'ajouter) de la propriété suivante dans la classe ExtendedImportClass:
private static readonly Logger Log = LogManager.GetCurrentClassLogger();
  1. Puis, n'importe où dans les méthodes de la classe, on peut ajouter un log. Par exemple, pour créer un log de niveau "Information" :
Log.Info("coucou");

Pour un log de niveau "Erreur" :

Log.Error("Wrong format");

Pour logguer une exception

Log.WarnException(string.Format("Unexpected exception:{0}",ex.Message), ex);

Voici la liste des niveaux de logs : Trace, Debug, Info, Warn, Error, Fatal.

Conseils supplémentaires

  • Cet article donne une vue très superficielle des possibilités de configuration de NLog, le mieux est de consulter le wiki en ligne.
  • Il est préférable d'éditer les fichiers de configuration NLog avec Visual Studio qui offrira l'IntelliSense et l'auto-complétion (à condition que NLog a bien été installé sur le poste).