Configurar Log4Net en la aplicación web


Tengo este código y el archivo de configuración a continuación:

ILog log = LogManager.GetLogger(typeof(MyClass));
log.Debug("Testing");

TestProj el directorio no se crea y si lo creo, no hay archivo TestLog.txt, no hay registro ... Nada.

Alguna idea?

Gracias,

El archivo de configuración

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

<log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="C:\\TestProj\\TestLog.txt" />
  <appendToFile value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="10MB" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
  </layout>
</appender>

<root>
  <level value="DEBUG" />
  <appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
 56
Author: Philipp M, 2012-04-18

5 answers

Necesita llamar a la función Configurede la XmlConfigurator

log4net.Config.XmlConfigurator.Configure();

Llame antes de su primera llamada de loggin o en su Global.asax así:

protected void Application_Start(Object sender, EventArgs e) {
   log4net.Config.XmlConfigurator.Configure();
}
 106
Author: shriek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-20 23:19:55

Otra forma de hacer esto sería agregar esta línea a la información de ensamblaje de la aplicación web:

// Configure log4net using the .config file
[assembly: log4net.Config.XmlConfigurator(Watch = true)]

Similar al de Shriek.

 21
Author: keni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-17 21:57:15

1: Agregue la siguiente línea a la clase AssemblyInfo

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

2: Asegúrate de no usar .Net Framework 4 Client Profile como Target Framework (Creo que esto está bien por tu parte porque de lo contrario ni siquiera se compilaría)

3: Asegúrese de iniciar sesión muy temprano en su programa. De lo contrario, en algunos escenarios, no se inicializará correctamente (lea más en log4net FAQ).

Así que registra algo durante el inicio de la aplicación en el Global.asax

public class Global : System.Web.HttpApplication
{
    private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(Global));
    protected void Application_Start(object sender, EventArgs e)
    {
        Log.Info("Startup application.");
    }
}

4: Asegúrate de tener permiso para crear archivos y carpetas en la ruta dada (si la propia carpeta tampoco existe)

5: El resto de la información dada se ve bien

 9
Author: hwcverwe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-01 11:07:26

A menudo esto se debe a la falta de permisos. Es posible que la cuenta de Windows con la que se ejecuta el grupo de aplicaciones de IIS local no tenga permiso para escribir en el directorio de aplicaciones. Puede crear un directorio en algún lugar, dar permiso a todos para escribir en él y apuntar su configuración de log4net a ese directorio. Si se crea un archivo de registro allí, puede modificar los permisos del directorio de registro deseado para que el grupo de aplicaciones pueda escribir en él.

Otra razón podría ser una log4net no iniciado. En una aplicación winforms, generalmente configura log4net al iniciar la aplicación. En una aplicación web, puede hacer esto dinámicamente (en su componente de registro, verifique si puede crear un logger Ilog específico usando su nombre, si no - > llamar a configure ()) o nuevamente al iniciar la aplicación en global.asax.cs.

 2
Author: Dirk Trilsbeek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-18 06:48:03

También tuve el problema similar. Los registros no estaban creando.

Por favor, compruebe que el nombre del atributo logger debe coincidir con su LogManager.getLogger ("nombre")

<logger name="Mylog">
      <level value="All"></level>
      <appender-ref ref="RollingLogFileAppender" />
    </logger>



private static readonly ILog Log = LogManager.GetLogger("Mylog");
 0
Author: Shakeer Hussain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-20 15:42:01