54 votes

NLog ne crée pas de fichier journal

Je tente d'ajouter un journal (logging) à une application s'exécutant sur un appareil mobile avec Windows Mobile 6.1. .NET Compact framework 3.5. en utilisant NLog.

J'ai la version appropriée de la distribution NLog installée.

Cependant, aucun fichier journal n'est créé.

Voici mon fichier NLog.config:

Et voici le code de test que j'utilisais:

public static void Main()
{
    try
    {
        AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException;
        var logger = NLog.LogManager.GetLogger("UpperLevel");
        logger.Info("test test test.");
        try
        {
            throw new Exception("Inattendu!");
        }
        catch (Exception e)
        {
            var logger = NLog.LogManager.GetLogger("UpperLevel");
            logger.WarnException("Une exception s'est produite.", e);
        }
        throw new Exception("Soudainement!");           
    }
    finally
    {
        NLog.LogManager.Flush();
    }
}

private static void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs unhandledExceptionEventArgs)
{
    var logger = NLog.LogManager.GetLogger("UpperLevel");
    logger.FatalException("L'application s'est fermée en raison d'une exception.", unhandledExceptionEventArgs.ExceptionObject as Exception);
    NLog.LogManager.Flush();
}

64voto

Malcolm Anderson Points 607

J'avais ce problème, il s'est avéré que mon fichier journal n'était pas copié dans mon répertoire de build. La page GitHub de NLog avait la réponse. (J'ai reformulé le paragraphe un peu pour une meilleure lisibilité.) https://github.com/NLog/NLog/wiki/Logging-troubleshooting

NLog ne trouve pas le fichier de configuration. Cela peut se produire lorsque le fichier NLog.config est configuré avec Build Action = None ou Copy to Output Directory = Do not copy dans Visual Studio.

Définissez Build Action = Content et "Copy to Output Directory = Copy if newer pour corriger cela)

23voto

Srv19 Points 1464

Le fichier journal était en train d'être créé - mais pas dans le répertoire de l'application.

En utilisant ${basedir} le moteur de mise en forme comme partie du nom de fichier s'est avéré être une solution.

21voto

Prem Kumar Badri Points 409

De guide de dépannage de Nlog

Veuillez vérifier les propriétés du fichier Nlog.config: Copier dans le répertoire de sortie devrait être Copier toujours

entrer la description de l'image ici

Veuillez voir le lien image https://i.stack.imgur.com/AlUG5.png

17voto

Mauricio Gracia Points 1971

Si la réponse marquée comme réponse n'est pas assez claire, vous pouvez vérifier l'exemple

Extrait d'ici utilisant l'emplacement AppData dans NLog

9voto

Alex Stephens Points 18

Mon problème était lié aux autorisations, le fichier journal doit permettre au processus d'écrire dedans, sans les autorisations d'écriture vous n'aurez pas de fichier.

Voici comment le résoudre pour les sites web dans IIS :

  1. Faites un clic droit sur votre dossier dans l'explorateur Windows et sélectionnez propriétés
  2. Choisissez l'onglet sécurité
  3. Cliquez sur modifier
  4. Cliquez sur ajouter
  5. Dans la zone de texte, tapez 'IIS AppPool\VotreNomAppPool' remplacez VotreNomAppPool par le nom réel du pool d'applications sous lequel votre site fonctionne
  6. Cliquez sur Vérifier les noms
  7. Cliquez sur OK

Note de sécurité : Du point de vue de la sécurité, la meilleure pratique est d'utiliser ApplicationPoolIdentity car il s'agit d'un compte dynamiquement créé et non privilégié. Pour en savoir plus : https://learn.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X