He creado un escenario simple usando Log4net, pero parece que mis apéndices de registro no funcionan porque los mensajes no se agregan al archivo de registro.
Agregué lo siguiente al archivo web.config:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/>
</configSections>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<file value="D:\MyData\Desktop\LogFile.txt" />
<appendToFile value="true" />
<encoding value="utf-8" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
<root>
<level value="INFO" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>
Dentro del archivo global ASAX que he agregado:
ILog logger = LogManager.GetLogger(typeof(MvcApplication));
Y dentro del método Application_Start:
logger.Info("Starting the application...");
¿Por qué el registro de prueba "Iniciando la aplicación ..." no se agrega al archivo de registro?
AssemblyInfo
archivo. Publicado como respuesta a continuación.Utilice esta página de preguntas frecuentes: Preguntas frecuentes de Apache log4net
Aproximadamente 3/4 del camino hacia abajo le indica cómo habilitar la depuración de log4net mediante el seguimiento de aplicaciones. Esto le dirá dónde está su problema.
Los fundamentos son:
Y ves el rastro en la salida estándar
fuente
root
sección se refería al registrador incorrecto!Como @AndreasPaulsson sugirió, tenemos que configurarlo. Estoy haciendo la configuración en el
AssemblyInfo
archivo. Especifico elconfiguration file name
aquí.fuente
Además, asegúrese de que la opción "Copiar siempre" esté seleccionada para [log4net] .config
fuente
Asegúrese de que el proceso (cuenta) en el que se ejecuta el sitio tenga privilegios para escribir en el directorio de salida.
En IIS 7 y superior, esto se configura en el grupo de aplicaciones y normalmente es la identidad del grupo de aplicaciones , que normalmente no tendrá permiso para escribir en todos los directorios.
Verifique sus registros de eventos (aplicación y seguridad) para ver si se produjeron excepciones.
fuente
Insertar:
al final del archivo AssemblyInfo.cs
fuente
Para mí, cambié la ubicación de los archivos de registro y solo cuando cambié el nombre del archivo a otra cosa, comenzó de nuevo.
Parece que si ya existe un archivo de registro con el mismo nombre, no pasa nada.
Luego renombro el archivo viejo y cambié el nombre del archivo de registro en la configuración nuevamente a lo que era.
fuente
En mi caso, log4net no estaba registrando correctamente debido a que tenía un espacio en el nombre de mi proyecto. Me volvió loco por qué el mismo código funcionó bien en un proyecto diferente, pero no lo hizo en el nuevo. Espacios Un espacio simple
Entonces, tenga cuidado con los espacios en los nombres de los proyectos. He aprendido mi leccion.
fuente
En mi caso, tuve que dar el
IIS_IUSRS
permiso de lectura / escritura al archivo de registro.fuente
Asegúrese de que el siguiente código de línea debe estar allí en el archivo AssemblyInfo.cs.
[ensamblaje: log4net.Config.XmlConfigurator (ConfigFile = "Web.config", Watch = true)]
y también verifique esta línea en el método Application_start ().
fuente
Su archivo de configuración parece correcto. Luego, debe registrar su archivo de configuración Log4net en la aplicación. Entonces puedes usar el siguiente código:
Después de registrar el proceso, puede llamar a la siguiente definición para llamar al registrador:
fuente
Para mí tuve que mover Logger a un paquete Nuget. El siguiente código debe agregarse en el proyecto del paquete NuGet.
Ver https://gurunadhduvvuru.wordpress.com/2020/04/30/log4net-issues-when-moved-it-to-a-nuget-package/ para más detalles.
fuente
Hay algunas formas de usar log4net. Descubrí que es útil mientras buscaba una solución. La solución se describe aquí: https://www.hemelix.com/log4net/
fuente