tag studio mtklogger log desactivar como alcatel logging console log4net

logging - studio - ¿Cómo desactivo los mensajes de estado de log4net en la consola?



tag log alcatel c7 (9)

Estoy usando log4net en mi aplicación de consola .NET 3.5 y me gustaría que los mensajes de registro generados se vean tanto en la consola estándar como en RollingFileAppender. La salida del archivo funciona como un amuleto, pero estoy viendo una corriente de mensajes de estado que fluyen hacia el estándar de la consola cuando lo ejecuto. Me gustaría omitir toda la información de estado y solo veo los mismos mensajes que estoy generando programáticamente en el archivo de registro.

Aquí hay un ejemplo de lo que veo después de ejecutar mi aplicación:

log4net: XmlHierarchyConfigurator: Configuration update mode [Merge]. log4net: XmlHierarchyConfigurator: Logger [root] Level string is [DEBUG]. log4net: XmlHierarchyConfigurator: Logger [root] level set to [name="DEBUG",value=30000]. log4net: XmlHierarchyConfigurator: Loading Appender [Console] type: [log4net.Appender.ConsoleAppender] log4net: PatternParser: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False]

y continúa hasta que describe la instanciación completa del objeto logger.

¿Cómo desactivo esto? ¿Puedo? Probé todo tipo de configuración de archivos de configuración, ¡pero nada los hace desaparecer! Grrr ...



Bueno, sí dice que el nivel del registrador de raíz está establecido en DEPURAR. Sin acceso a su archivo de configuración o al código desde el que se inicia el registro, supongo que está utilizando implícitamente los valores predeterminados para el registrador de raíz, que

  1. Va a la línea de comando (stdout), y
  2. es DEBUG por defecto

por favor mira log4net faq . ellos realmente tienen todos esos inconvenientes comunes que pueden encontrar.


Acabo de pasar por este mismo problema (que, como era de esperar, es cómo encontré esta pregunta).

De todos modos, mi problema, y ​​posiblemente el tuyo también, fue causado por una configuración de archivo de configuración web / app de " < log4net debug = true > ". Demasiado obvio, ¿verdad? Había pegado el esqueleto de la configuración de mi app.config desde un fragmento web, y me había centrado en los appenders, sin dar realmente un segundo vistazo al elemento raíz log4net. Pero ahí lo tienes. Esto está en las preguntas frecuentes, pero de nuevo me llamaron la atención otras cosas y no este atributo.


establecer debug = falso

<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net debug="false"> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="your file name" /> <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> </configuration>


Estoy teniendo el mismo problema que OP. En log4net.config he configurado debug = false. También tengo un solo FileAppender configurado con un PatternLayout definido. Cuando utilizo log.Warn ("prueba") obtengo los resultados formateados esperados escritos en el archivo txt esperado. Sin embargo, también obtengo una cadena más detallada escrita en la consola (stdout).

EDITAR: La solución para mí fue eliminar esta línea en mi código BasicConfigurator.Configure (); Tenga en cuenta que nada que indique explícitamente a log4net que escriba tanto en la consola como en FileAppender declarado se indicó en mi configuración. De hecho, se declaró log4net debug = false y el problema continuó persistiendo. El código de ejemplo en la página de inicio de log4net invoca descuidadamente BasicConfigurator.Configure (); Aunque utilizo log4net, la biblioteca sufre los mismos problemas que muchos proyectos ambiciosos de código abierto. Existen configuraciones extensas basadas en XML para ofrecer a los desarrolladores miles de opciones para una tarea que realmente debería tener una interfaz más optimizada disponible. Los programadores no tienden a valorar el tiempo de los demás. Aplicamos la regla "no me hagas pensar" en nuestras interfaces de usuario, pero no en nuestras interfaces de máquina. Es como si desdeñáramos un principio central que es universal para un buen diseño. Las complejidades deben estar disponibles para el desarrollador, pero no se deben perder unas pocas horas para lograr la funcionalidad central. Teniendo esto en cuenta, diría que log4net está mal diseñado. Al igual que con la mayoría del software, existe una gran complejidad por el bien de la complejidad. Si los desarrolladores que guían el proyecto tuvieran más talento, el caso de uso más común de la biblioteca (haciendo referencia a su uso para registrarlo en un archivo de texto en la carpeta de la aplicación) podría implementarse con 5-10 minutos de exposición sin ningún conocimiento previo. Ese no es el caso porque el diseño de la interfaz y la metodología para la configuración. Destaca la razón por la que odio la forma en que la mayoría de los ingenieros de software piensan. Son incapaces de ver el valor exponencial de la simplicidad para los casos de uso más comunes y en su lugar asumen que cuanto más desconcertante sea la interfaz, más valor aportará a otros desarrolladores. Ellos son impulsados ​​por el ego y la ignorancia. No es de extrañar que la mayoría sea paria social.


Si tienes esto en tu código:

log4net.Config.BasicConfigurator.Configure();

Cambiarlo a:

log4net.Config.XmlConfigurator.Configure();


¿Podría indicar a qué se parece su sección de configuración de log4net, o al menos cómo la configura? Mi mejor suposición es que esta respuesta es correcta ya que tiene la depuración interna de log4net configurada. O eso o tienes el origen de log4net en tu proyecto y lo estás compilando con tu propio código. Eso haría que recoja sus configuraciones y lo ejecute de la misma manera.


En la aplicación que heredé, estaba la línea:

<appSettings> <add key="log4net.Internal.Debug" value="true"/>

Cambiar eso a false solucionó el problema.