Es hay alguna forma de que podemos cambiar las logback configuraciones? Sé que definimos la logback configuraciones en el archivo llamado logback.xml (normalmente se almacena en la ruta src/recursos), y sé que por el uso de <include> etiqueta podemos establecer un archivo externo, para ser agregado a logback.xml como a continuación:

<configuration>

<!--<include url="file:///d:/ServerConfig.xml"/>-->
<include file="${outPut}/ServerConfig.xml"/>


<logger name="Server" LEVEL="DEBUG">
    <appender-ref ref="FILEOUT" />
</logger>

<root level="DEBUG">
    <appender-ref ref="STDOUT" />
    <!--<appender-ref ref="FILEOUT" />-->
</root>

</configuration>

Pero lo que si quiero ignorar esta configuración por defecto (por ejemplo la raíz de un registrador de nivel a INFO)

por cierto aquí está el archivo incluido:

<included>

<!-- <property file="d:/ServerSysVar.properties"/>-->
<property file="${outPut}/ServerSysVar.properties"/>


<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>



<appender name="FILEOUT" class="ch.qos.logback.core.FileAppender">
    <file>${Sys_Location}/Serverfile4.log</file>
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} %class{36}.%M %L CLIENT_PORT:%X{ClientPort}- %msg%n</pattern>
    </encoder>
</appender>


<logger name="Service" LEVEL="DEBUG">
    <appender-ref ref="FILEOUT" />
</logger>

 <root>
    <appender-ref ref="STDOUT" />
   <!-- <appender-ref ref="FILEOUT" />-->
</root>

</included>
  • Hay un error informó en 2011 que pretende resolver el problema primordial de configuración con el Sistema de Propiedades – jira.qos.ch/browse/LOGBACK-239
  • La discusión muestra notable de la terquedad de la autora que se resisten a cambiar nada para algunos académicos tonterías. Me pregunto cómo esta aplicación puede ser todavía vivo?
InformationsquelleAutor Mr.Q | 2014-05-14

2 Comentarios

  1. 22

    No creo que usted puede sobrescribir logback.xml-definiciones a partir de un archivo incluido.

    Pero tengo un enfoque que resuelve tu pregunta con respecto a la invalidación de la raíz-registrador de nivel, utilizando la sustitución de variables con valores por defecto:

    logback.xml

    <configuration>
      <include file="includedFile.xml" />
    
      <!-- STDOUT appender stuff -->
    
      <root level="${root.level:-DEBUG}">
        <appender-ref ref="STDOUT" />
      </root>
    <configuration>
    

    includedFile.xml

    <included>
    
      <!-- override the default value; or comment out to leave it at default -->
      <property name="root.level" value="INFO" />
    
    </included>
    

    Con ese concepto, incluso he sido capaz de controlar la salida de varios appenders desde el archivo incluido:

    logback.xml

    <configuration>
      <include file="includedFile.xml" />
    
      <!-- STDOUT appender stuff -->
    
      <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
          <level>${file.level:-ALL}</level>
        </filter>
        <file>/path/to/logfeil.log</file>
        <encoder>
          <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
      </appender>
    
      <appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
          <level>${syslog.level:-OFF}</level>
        </filter>
        <syslogHost>localhost</syslogHost>
        <facility>${syslog.facility:-LOCAL1}</facility>
        <suffixPattern>${syslog.pattern:-[%thread] %logger{36} - %msg}</suffixPattern>
       </appender>
    
      <logger name="my.package" level="${logging.level:-INFO}" additivity="false">
        <appender-ref ref="FILE" />
        <appender-ref ref="SYSLOG" />
      </logger>
    
      <root level="${root.level:-DEBUG}">
        <appender-ref ref="STDOUT" />
      </root>
    <configuration>
    

    Y en el includedFile.xml puedo controlar si, y en qué nivel del mensaje deberá pasar a través de los appenders FILE y SYSLOG, la configuración de las propiedades file.level, syslog.level y, por supuesto,logging.level.

  2. 2

    He tenido un problema similar al que esta respuesta parece el mejor enfoque.

    En mi caso, necesitaba reemplazar el archivo incluido para desactivar completamente uno de los appenders.

    El uso de la variable para el valor de nivel de registro, uno puede cambiar a OFF.

    <included>
      (...)
      <root level="${root.level.console:-DEBUG}">
        <appender-ref ref="CONSOLE" />
      </root>
      <root level="${root.level.file:-DEBUG}">
        <appender-ref ref="FILE" />
      </root>
    </included>
    

    Como se indica en http://logback.qos.ch/manual/configuration.html#rootElement

    <configuration>
      <include resource="base.xml" />
      (...)
      <property name="root.level.console" value="OFF" />
    </configuration>
    
    • Esta variante no funciona para mí. Yo uso logback la versión 1.1.3. ¿Qué versión usas? Al menos no es lo que appender del archivo de la etiqueta. He tratado de omitir nombre de archivo del archivo incluido
    • Es importante establecer que <a la propiedad nombre=»root.nivel.la consola de» valor=»OFF» /> antes <incluir resource=»base.xml» />
    • La documentación dice que «en la mayoría de one <root> elemento», por lo que si esto funciona, probablemente no intencionales por su parte. Parece que sería mejor poner el <root> elemento dentro de su archivo incluido.

Dejar respuesta

Please enter your comment!
Please enter your name here