Configuración del registro
Un fichero internal-logback.xml por defecto forma parte del fichero .war de ThingWorx y se utiliza para configurar el subsistema de logback. Para buscar el fichero, descomprima el fichero Thingworx.war y, a continuación, descomprima WEB_INF/lib/thingworx-platform-common-[número_versión].jar.
Se puede copiar internal-logback.xml en /ThingworxPlatform/logback.xml y realizar los cambios. Estos ficheros logback.xml no se agrupan ni se heredan entre sí. A continuación, se puede colocar el fichero actualizado en el directorio de configuración de ThingWorx default/ThingworxPlatform para cada instancia de ThingWorx.
Cambio del nivel de registro a DEBUG
Se puede cambiar una entrada para forzar que el nivel de registro de una clase específica sea DEBUG. Por ejemplo, se puede cambiar lo siguiente:
<logger name="org.springframework.security" level="INFO" additivity="false">
<appender-ref ref="ASYNC_APPENDER_SECURITY"/>
</logger>
por lo siguiente con el nivel ="DEBUG":
<logger name="org.springframework.security" level="DEBUG" additivity="false">
<appender-ref ref="ASYNC_APPENDER_SECURITY"/>
</logger>
O bien, se puede añadir una nueva entrada con el nivel de registro específico. Por ejemplo:
<logger name="com.thingworx.security.authentication.sso" level="DEBUG" additivity="false">
<appender-ref ref="ASYNC_APPENDER_SECURITY"/>
</logger>
Una entrada de nivel de paquete como esta activará el registro para ese paquete y los subpaquetes.
Adicionadores
Para especificar en qué registro desea que aparezca la información, especifique el adicionador correcto en <appender-ref ref="[nombre de adicionador]"/>. Los posibles adicionadores son:
ASYNC_APPENDER_CONSOLE: salida de la consola
ASYNC_APPENDER_APPLICATION: registro de aplicación
ASYNC_APPENDER_ERROR: registro de errores
ASYNC_APPENDER_SECURITY: registro de seguridad
ASYNC_APPENDER_SCRIPT: registro de scripts
ASYNC_APPENDER_SCRIPT_ERROR: registro de errores de scripts
ASYNC_APPENDER_CONFIGURATION: registro de configuración
ASYNC_APPENDER_DATABASE: registro de base de datos
ASYNC_APPENDER_COMMUNICATION: registro de comunicaciones
Appender asíncrono
ThingWorx utiliza la biblioteca de registro de logback con los appenders de consola y de fichero de sustitución. Ambos appenders están empaquetados con el appender asincrónico, que desconecta los solicitantes de registro de las escrituras de registro reales. Los solicitantes de registro llaman al método append(logEvent) en AsyncAppender. Este método permite añadir logEvent a la cola interna dentro de AsyncAppender. Por lo tanto, el solicitante del registro puede continuar su trabajo sin tener que esperar a que logEvent se escriba en la consola o el fichero de destino. En AsyncAppender, un subproceso interno selecciona el objeto logEvent más antiguo de la cola interna y llama a append(LogEvent) en la consola o el fichero del appender de registro que lo incluye. La cola interna también sirve de búfer, lo que impide la pérdida de datos durante las ráfagas cortas de actividad cuando las solicitudes de registro por segundo superan la velocidad de escritura del appender interno. Para obtener más información, consulte https://logback.qos.ch/manual/appenders.html.
Se pueden configurar los siguientes parámetros para el objeto AsyncAppender en el fichero logback.xml:
Parámetro
Variable de entorno
Tipo base
Por defecto
Descripción
queueSize
diferente para cada AsyncAppender; consulte la siguiente tabla
INTEGER
256
La capacidad máxima de la cola de bloqueo. Este valor se utiliza durante la creación de AsyncAppender y no se puede cambiar. Este valor se puede definir por appender.
discardingThreshold
DISCARDING_THRESHOLD
INTEGER
0%
Por defecto, cuando la cola de bloqueo tiene un 20 % de capacidad restante, se descartarán los eventos con niveles TRACE, DEBUG e INFO, y se mantendrán los eventos con niveles WARN y ERROR. Para conservar todos los eventos, defina discardingThreshold en 0.
maxFlushTime
MAX_FLUSH_TIME
INTEGER
1000 ms
El tiempo de espera máximo de vaciado de cola en milisegundos. En función de la profundidad de la cola y la latencia del appender al que se hace referencia, AsyncAppender puede tardar una cantidad de tiempo inaceptable para vaciar por completo la cola. Cuando LoggerContext se detiene, el método de detención AsyncAppender espera esta cantidad de tiempo para que se complete el subproceso del convertidor. Los eventos que no se pueden procesar en ese tiempo se descartan. La semántica de este valor es idéntica a la de Thread.join(long).
neverBlock
NEVER_BLOCK
BOOLEAN
falso
Por defecto, este parámetro se define en falso, lo que significa que el appender se bloqueará al anexar a una cola completa en lugar de perder el mensaje. Si se define en verdadero, el appender descartará el mensaje y no bloqueará la aplicación.
Valores de tamaño de cola para los appenders asíncronos
Cada elemento AsyncAppender tiene su propio valor para queueSize, ya que los registradores tendrán diferentes cargas y necesitarán tamaños de cola distintos.
Nombre del appender
Variable de entorno
Por defecto
ASYNC_APPENDER_APPLICATION
MAX_QUEUE_SIZE_APPLICATION
10000
ASYNC_APPENDER_CONSOLE
ASYNC_APPENDER_CONSOLE
10000
ASYNC_APPENDER_CONFIGURATION
MAX_QUEUE_SIZE_CONFIGURATION
1000
ASYNC_APPENDER_SECURITY
MAX_QUEUE_SIZE_SECURITY
1000
ASYNC_APPENDER_DATABASE
MAX_QUEUE_SIZE_DATABASE
1000
ASYNC_APPENDER_COMMUNICATION
MAX_QUEUE_SIZE_COMMUNICATION
1000
ASYNC_APPENDER_ERROR
MAX_QUEUE_SIZE_ERROR
5000
ASYNC_APPENDER_SCRIPT
MAX_QUEUE_SIZE_SCRIPT
5000
ASYNC_APPENDER_SCRIPT_ERROR
MAX_QUEUE_SIZE_SCRIPT_ERROR
5000
Los valores por defecto se pueden cambiar definiendo la variable de entorno asociada. Si se ejecuta un servidor en Eclipse, las variables de entorno se deben definir en Run configuration/server/environment.
Los valores especificados mediante variables de entorno solo se seleccionarán durante el inicio del servidor. Por lo tanto, si desea cambiar alguno de los valores después de que se inicie el servidor, deberá reiniciarlo.
Configuración del registro
A continuación se muestran los valores de configuración de logback por defecto para los ficheros de sustitución y el archivado. Esta opción se puede configurar en Composer en Subsistemas > LoggingSubsystem > Configuración > Configuración de conservación del registro.
Configuración de conservación del registro
Nombre de la propiedad
Por defecto
Descripción
Tamaño máximo de fichero en KB
MAX_FILE_SIZE
100000
Límite del tamaño de cada fichero de registro
Número de días máximo de archivo
MAX_HISTORY_SIZE
7
Número de días que los ficheros de registro se guardan en el archivo
Tamaño total en GB de todos los ficheros de registro que se deben conservar
TOTAL_SIZE_CAP
10
Límite del tamaño de todos los ficheros de registro del archivo
Modo de clúster frente a modo de servidor único
En el modo de clúster, varias instancias escribirán sus registros en un único fichero. Para llevarlo a cabo, se debe activar el señalizador prudent en la configuración de RollingFileAppender. Sin embargo, existen restricciones:
En el modo prudent, la compresión de ficheros no está permitida. Una instancia no puede escribir mientras otra se está comprimiendo.
La propiedad de fichero de FileAppender debe estar en blanco. La mayoría de los sistemas operativos no permiten cambiar el nombre de un fichero mientras otro proceso lo tenga abierto.
En el siguiente ejemplo, RollingFileAppender se ha configurado con SizeAndTimeBasedRollingPolicy en modo de clúster:
<!-- configuration appender -->
<appender name="CONFIGURATION" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- Support multiple-JVM writing to the same log file -->
<prudent>true</prudent>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>{LOG_PATH}/ConfigurationLog.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>{MAX_HISTORY_SIZE}</maxHistory>
<totalSizeCap>{TOTAL_SIZE_CAP}</totalSizeCap>
<maxFileSize>{MAX_FILE_SIZE}</maxFileSize>
</rollingPolicy>
<encoder class="com.thingworx.logging.ThingWorxPatternLayoutEncoder">
<pattern>{CONFIGURATION_LAYOUT_PATTERN}</pattern>
</encoder>
</appender>
En el modo de servidor único, el fichero de registro activo se colocará en {ThingworxStorage}/logs y el fichero sustituido estará en {ThingworxStorage}/logs/archive.
En el siguiente ejemplo, RollingFileAppender se ha configurado con SizeAndTimeBasedRollingPolicy en modo de servidor único:
<!-- application appender -->
<appender name="APPLICATION" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>{LOG_PATH}/ApplicationLog.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>{LOG_PATH}/archives/ApplicationLog.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>{MAX_HISTORY_SIZE}</maxHistory>
<totalSizeCap>{TOTAL_SIZE_CAP}</totalSizeCap>
<maxFileSize>{MAX_FILE_SIZE}</maxFileSize>
</rollingPolicy>
<encoder class="com.thingworx.logging.ThingWorxPatternLayoutEncoder">
<pattern>{LAYOUT_PATTERN}</pattern>
</encoder>
</appender>
¿Fue esto útil?