visual studio ejemplo c# log4net

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(); }