c# - studio - Configurar Log4Net en la aplicación web
log4net visual studio 2017 (5)
Tengo este código y el archivo de configuración a continuación:
ILog log = LogManager.GetLogger(typeof(MyClass));
log.Debug("Testing");
TestProj
directorio TestProj
no se crea y si lo creo, no hay TestLog.txt
archivo TestLog.txt
, ningún 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>
1: agregue la siguiente línea en la clase AssemblyInfo
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
2: asegúrese de no utilizar .Net Framework 4 Client Profile
como Target Framework
(creo que esto está bien de su lado 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 sobre las preguntas frecuentes de log4net ).
Así que registre algo durante el inicio de la aplicación en 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úrese de tener permiso para crear archivos y carpetas en la ruta determinada (si la carpeta tampoco existe)
5: El resto de su información dada se ve bien
Otra forma de hacerlo 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 a Shriek''s
También tuve el problema similar. Los registros no estaban creando.
Compruebe que el nombre del atributo del registrador 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");
a menudo esto se debe a la falta de permisos. La cuenta de Windows con la que se ejecuta el conjunto de aplicaciones IIS local puede no tener permiso para escribir en el directorio de aplicaciones. Podrías crear un directorio en alguna parte, dar permiso a todos para escribir en él y dirigir tu configuración de log4net a ese directorio. Si luego se crea un archivo de registro allí, puede modificar los permisos para el directorio de registro deseado para que el grupo de aplicaciones pueda escribir en él.
Otra razón podría ser un log4net no inicializado. En una aplicación de winforms, generalmente configura log4net al inicio de la aplicación. En una aplicación web, puede hacer esto ya sea dinámicamente (en su componente de registro, compruebe si puede crear un registrador Ilog específico usando su nombre, si no -> call configure ()) o de nuevo al inicio de la aplicación en global.asax.cs .
XmlConfigurator
llamar a la función Configure
del XmlConfigurator
log4net.Config.XmlConfigurator.Configure();
Llame antes de su primera llamada de inicio de sesión o en su Global.asax de la siguiente manera:
protected void Application_Start(Object sender, EventArgs e) {
log4net.Config.XmlConfigurator.Configure();
}