2010-05-12 3 views
56

Lorsque je définis la valeur du fichier sur logs\log-file.txt, où créera-t-il exactement ce dossier? Dans le répertoire /bin?Où log4net créera-t-il ce fichier journal?

Mon web.config ressemble à ceci:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
     <file value="logs\log-file.txt" /> 
     <appendToFile value="true" /> 
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
     </layout> 
    </appender> 
</log4net> 

Est-ce la bonne façon de se connecter:

ILog logger = LogManager.GetLogger(typeof(CCController)); 
logger.Error("Some Page", ex); // where ex is the exception instance 
+0

Pouvez-vous s'il vous plaît accepter l'une des réponses comme correct? Merci –

Répondre

18

La valeur de fichier peut être un chemin absolu comme « c: \ logs \ log.txt "ou un chemin relatif que je crois être relatif au répertoire bin.

En ce qui concerne sa mise en œuvre, je place généralement les suivantes au sommet d'une classe que je prévois de vous connecter:

private static readonly ILog Log = LogManager.GetLogger( 
MethodBase.GetCurrentMethod().DeclaringType); 

Enfin, vous pouvez l'utiliser comme ceci:

Log.Debug("This is a DEBUG level message."); 
+1

hmm..il ne semble pas créer le fichier journal n'importe où, et je ne reçois aucune erreur? – Blankman

+2

Cela ressemble à un problème d'autorisations. Je voudrais mapper la configuration à un chemin absolu en dehors de votre répertoire Web. Ensuite, assurez-vous que le fichier journal et le dossier disposent des autorisations permettant au processus de travail asp.net d'accéder correctement. –

+0

Pour un chemin relatif, j'aime que le fichier journal soit au niveau du projet:

0

Je pense que votre exemple enregistre dans vos dossiers de projet et à moins que l'utilisateur iis ou .NET par défaut n'ait une autorisation de création, il ne pourra pas créer le dossier des journaux.

Je créerais d'abord le dossier des journaux et autoriserais l'utilisateur iis à obtenir l'autorisation complète pour voir si le fichier journal est en cours de création.

4

Pour le dossier de journal et les fichiers, passez à @Bens answer.

Je vais commenter la partie log de création, cependant. Imo il n'y a pas correct manière. Lors du codage manuel des enregistreurs, je le fais de la façon dont vous le faites:

ILog logger = LogManager.GetLogger(typeof(CCController)); 

parce qu'il est court et concis. Cela dit, je ne crée pas les instances logger dans les classes ces jours-ci, I let my IoC container inject it for me. Log4net enregistre dans votre dossier de projet.

9

Quelque chose comme: \SolutionFolder\ProjectFolder\bin\SolutionConfiguration\logs\log-file.txt.

Où:

  • SolutionFolder est l'endroit où vous enregistrez votre solution
  • ProjectFolder est le dossier dans lequel votre projet réside dans la solution et
  • SolutionConfiguration est le dossier qui contais tous les binaires de votre projet (la valeur par défaut est Debug ou Release)

Espérons que cela aide!

42

Si vous voulez que votre fichier journal être lieu à un endroit précis qui sera décidé au moment de l'exécution peut être votre répertoire de sortie du projet, vous pouvez vous configurer .config entrée de fichier de cette façon

<file type="log4net.Util.PatternString" value="%property{LogFileName}.txt" /> 

puis dans le code avant d'appeler log4net configure, définissez le nouveau chemin comme ci-dessous

log4net.GlobalContext.Properties["LogFileName"] = @"E:\\file1"; //log file path 
log4net.Config.XmlConfigurator.Configure(); 

Comment est-il simple? :)

+1

Bon truc, ça aide à mettre toute la configuration au même endroit :) –

32

il va créer le fichier dans le répertoire racine de votre projet/solution.

Vous pouvez spécifier un emplacement de choix dans le web.config de votre application comme suit:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="c:/ServiceLogs/Olympus.Core.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <datePattern value=".yyyyMMdd.log" /> 
     <maximumFileSize value="5MB" /> 
     <staticLogFileName value="true" /> 
     <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" /> 
     <maxSizeRollBackups value="-1" /> 
     <countDirection value="1" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date %-5level [%thread] %logger - %message%newline%exception" /> 
     </layout> 
    </appender> 

la balise de fichier indique l'emplacement.

+7

+1 la seule réponse qui répond directement à la question " Où log4net créera-t-il ce fichier journal? " – Keith

+0

Salut Oladipo, pour moi sans journal de définition de chemin est créé dans le dossier bin. – Pompair

2
FileAppender appender = repository.GetAppenders().OfType<FileAppender>().FirstOrDefault(); 
if (appender != null) 
    logger.DebugFormat("log file located at : {0}", appender.File); 
else 
    logger.Error("Could not locate fileAppender"); 
Questions connexes