2014-05-22 1 views
1

Les journaux ne sont pas créés sur le serveur (Windows 2008) et IIS7. J'avais donné le chemin absolu aussi bien que le chemin relatif.Log4net ne fonctionne pas dans IIS7 sur Windows Server 2008

J'avais donné tous les droits au dossier de journal. J'avais inclus l'utilisateur du réseau, IUsr et IIS_IUSRS, et donné la permission à chacun. aussi.

Il n'écrit pas les journaux à ce dossier

les entrées sur la configuration Web est la suivante

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 

<log4net> 
<logger name="GeneralLogger"> 
<level value="ALL" /> 
<appender-ref ref="RollingFile" /> 
</logger> 
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
<file value="C:\\vhosts\\staging.customerportal.com\\log\\CustomerPortal.log"/> 
<appendToFile value="true"/> 
<datePattern value="yyyyMMdd"/> 
<rollingStyle value="Date"/> 
<filter type="log4net.Filter.LevelRangeFilter"> 
<acceptOnMatch value="true"/> 
<levelMin value="DEBUG"/> 
<levelMax value="FATAL"/> 
</filter> 
<layout type="log4net.Layout.PatternLayout"> 
<conversionPattern value="%-5p %d %5rms %X{addr} %-22.22c{1} %-18.18M - %m%n"/> 
</layout> 
</appender> 
</log4net> 

j'avais essayé de donner barre oblique et bien que la double barre oblique de la valeur de fichier dans la configuration web rien ne fonctionne.

Le code dans les Global.asax.cs est

public class MvcApplication : System.Web.HttpApplication 
{ 
    private static log4net.ILog log = log4net.LogManager.GetLogger(typeof(MvcApplication)); 

    protected void Application_Start() 
    { 
     log4net.Config.XmlConfigurator.Configure(); 

    } 
Code

dans AssemblyInfo.cs est

[assembly: XmlConfigurator(ConfigFile="web.config", Watch=true)] 

J'avais essayé avec ce code et aussi sans ce code dans AssemblyInfo.cs

Cela ne fonctionne pas.

Où que Quand j'utilise un chemin absolu dans localhost les journaux sont écrits dans ce dossier correctement

Il échoue sur le serveur

j'avais essayé ces deux options dans le fichier du contrôleur

//private static log4net.ILog log =  
     log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)  ; 
    private static log4net.ILog log = log4net.LogManager.GetLogger("GeneralLogger"); 

J'avais essayé un chemin qui n'existe pas, il n'a pas créé de dossier.

S'il vous plaît aidez-moi. Aidez-moi à activer les journaux à l'aide de log4net dans le serveur

+0

Ce sou ça ressemble beaucoup à un problème d'autorisations. Êtes-vous sûr à 100% que le compte d'utilisateur sous lequel le pool d'applications s'exécute dispose d'un accès en écriture au dossier du journal? – stuartd

Répondre

1

Vous initialisez votre enregistreur avant de configurer le gestionnaire de journaux (en fait, vous le configurez deux fois) en appelant le Configure on Application_Start.

Option 1:

public class MvcApplication : System.Web.HttpApplication 
{ 
private static log4net.ILog log = log4net.LogManager.GetLogger(typeof(MvcApplication)); 

protected void Application_Start() 
{ 
    //Remove: log4net.Config.XmlConfigurator.Configure(); 

} 

Et garder:

[assembly: XmlConfigurator(ConfigFile="web.config", Watch=true)] 

Option 2:

public class MvcApplication : System.Web.HttpApplication 
{ 
private static log4net.ILog log; 

protected void Application_Start() 
{ 
    log4net.Config.XmlConfigurator.Configure(); 
    log = log4net.LogManager.GetLogger(typeof(MvcApplication)); 
} 

Et enlever:

//Remove: [assembly: XmlConfigurator(ConfigFile="web.config", Watch=true)] 
Questions connexes