Configuration de la journalisation
Un fichier internal-logback.xml par défaut fait partie du fichier .war ThingWorx et est utilisé pour configurer le sous-système logback. Pour trouver le fichier, dézippez le fichier Thingworx.war, puis le fichier WEB_INF/lib/thingworx-platform-common-[numéro_version].jar.
Vous pouvez copier le fichier internal-logback.xml dans /ThingworxPlatform/logback.xml et apporter des modifications. Ces fichiers logback.xml ne s'empilent pas et n'héritent pas les uns des autres. Vous pouvez ensuite placer votre fichier mis à jour dans le répertoire de configuration de ThingWorx default/ThingworxPlatform pour chaque instance de ThingWorx.
Modification du niveau de journal sur DEBUG
Vous pouvez modifier une entrée pour forcer le niveau de journal d'une classe spécifique sur DEBUG. Par exemple, vous pouvez modifier le code suivant :
<logger name="org.springframework.security" level="INFO" additivity="false">
<appender-ref ref="ASYNC_APPENDER_SECURITY"/>
</logger>
comme suit (avec level="DEBUG") :
<logger name="org.springframework.security" level="DEBUG" additivity="false">
<appender-ref ref="ASYNC_APPENDER_SECURITY"/>
</logger>
Vous pouvez également ajouter une nouvelle entrée avec le niveau de journal spécifique, Par exemple :
<logger name="com.thingworx.security.authentication.sso" level="DEBUG" additivity="false">
<appender-ref ref="ASYNC_APPENDER_SECURITY"/>
</logger>
Une entrée de niveau package comme celle-ci active la journalisation pour ce package et les sous-packages.
Appenders
Vous pouvez spécifier dans quel journal vous souhaitez que les informations apparaissent en spécifiant l'appender approprié dans <appender-ref ref="[nom appender]"/>. Les appenders possibles sont les suivants :
ASYNC_APPENDER_CONSOLE - sortie de la console
ASYNC_APPENDER_APPLICATION - journal de l'application
ASYNC_APPENDER_ERROR - journal des erreurs
ASYNC_APPENDER_SECURITY - journal de sécurité
ASYNC_APPENDER_SCRIPT - journal de script
ASYNC_APPENDER_SCRIPT_ERROR - journal des erreurs de script
ASYNC_APPENDER_CONFIGURATION - journal de configuration
ASYNC_APPENDER_DATABASE - journal de base de données
ASYNC_APPENDER_COMMUNICATION - journal de communication
Appender asynchrone
ThingWorx utilise la bibliothèque de journalisation logback avec les appenders de fichiers de console et de substitution. Ces deux appenders sont encapsulés avec l'appender asynchrone, qui déconnecte les demandeurs de journal des écritures de journal réelles. Les demandeurs de journal appellent la méthode append(logEvent) sur AsyncAppender. Cette méthode ajoute logEvent à la file d'attente interne dans AsyncAppender. Par conséquent, le demandeur du journal peut continuer à travailler sans avoir à attendre que logEvent soit écrit dans le fichier ou la console de destination. Dans AsyncAppender, un thread interne sélectionne le logEvent le plus ancien dans la file d'attente interne et appelle la méthode append(LogEvent) sur le fichier ou la console de l'appender de journal conteneur. La file d'attente interne sert également de tampon, ce qui empêche la perte de données pendant les brefs pics d'activité où le nombre de demandes de journalisation par seconde surpasse la vitesse d'écriture de l'appender interne. Pour plus d'informations, consultez la page https://logback.qos.ch/manual/appenders.html (en anglais).
Vous pouvez configurer les paramètres suivants pour AsyncAppender dans le fichier logback.xml :
Paramètre
Variable d'environnement
Type de base
Par défaut
Description
queueSize
Différent pour chaque AsyncAppender. Voir la table ci-dessous.
INTEGER
256
Capacité maximale de la file d'attente de blocage. Cette valeur est utilisée lors de la création d'AsyncAppender et ne peut pas être modifiée. Cette valeur peut être définie par appender.
discardingThreshold
DISCARDING_THRESHOLD
INTEGER
0 %
Par défaut, lorsque la capacité de la file d'attente de blocage est de 20 %, elle supprime les événements avec les niveaux TRACE, DEBUG et INFO et conserve ceux avec les niveaux WARN et ERROR. Pour conserver tous les événements, définissez discardingThreshold sur 0.
maxFlushTime
MAX_FLUSH_TIME
INTEGER
1 000 ms
Délai maximal, en millisecondes, de vidage de la file d'attente. En fonction de la profondeur de la file d'attente et de la latence par rapport à l'appender référencé, le vidage complet de la file d'attente par AsyncAppender peut prendre beaucoup de trop de temps. Lorsque LoggerContext est arrêté, la méthode d'arrêt d'AsyncAppender attend le délai défini pour que le thread de travail s'achève. Les événements qui ne peuvent pas être traités dans ce délai sont ignorés. La sémantique de cette valeur est identique à celle de Thread.join(long).
neverBlock
NEVER_BLOCK
BOOLEAN
false
Par défaut, ce paramètre est défini sur "faux", ce qui signifie que l'appender bloquera l'ajout à une file d'attente complète plutôt que de perdre le message. Si vous lui attribuez la valeur "vrai", l'appender supprimera le message et ne bloquera pas votre application.
Valeurs de taille de file d'attente pour les appenders asynchrones
Chaque AsyncAppender possède sa propre valeur pour queueSize. Les charges des enregistreurs étant différentes, il convient d'adapter les tailles de file d'attente.
Nom de l'appender
Variable d'environnement
Par défaut
ASYNC_APPENDER_APPLICATION
MAX_QUEUE_SIZE_APPLICATION
10000
ASYNC_APPENDER_CONSOLE
ASYNC_APPENDER_CONSOLE
10000
ASYNC_APPENDER_CONFIGURATION
MAX_QUEUE_SIZE_CONFIGURATION
1 000
ASYNC_APPENDER_SECURITY
MAX_QUEUE_SIZE_SECURITY
1 000
ASYNC_APPENDER_DATABASE
MAX_QUEUE_SIZE_DATABASE
1 000
ASYNC_APPENDER_COMMUNICATION
MAX_QUEUE_SIZE_COMMUNICATION
1 000
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
Vous pouvez modifier les valeurs par défaut en définissant la variable d'environnement associée. Si vous exécutez un serveur dans Eclipse, vous devez définir les variables d'environnement dans la Run configuration/server/environment.
Les valeurs spécifiées via les variables d'environnement ne seront sélectionnées qu'au démarrage du serveur. Par conséquent, si vous souhaitez modifier l'une des valeurs après le démarrage du serveur, vous devez le redémarrer.
Paramètres du journal
Les paramètres de configuration logback par défaut des fichiers de substitution et l'archivage sont répertoriés ci-dessous. Vous pouvez configurer ces paramètres dans Composer sous Sous-systèmes > LoggingSubsystem > Configuration > Paramètres de rétention du journal.
Paramètre de rétention du journal
Nom de la propriété
Par défaut
Description
Taille de fichier max. (Ko)
MAX_FILE_SIZE
100000
Taille maximale de chaque fichier journal
Nbre max. de jours pour archive
MAX_HISTORY_SIZE
7
Nombre de jours de conservation des fichiers journaux dans l'archive
Taille totale (en Go) de tous les fichiers journaux à conserver
TOTAL_SIZE_CAP
10
Taille maximale de tous les fichiers journaux de l'archive
Mode cluster et mode serveur unique
En mode cluster, plusieurs instances écrivent leurs journaux dans un seul fichier. Pour ce faire, vous devez activer le marqueur prudent dans la configuration RollingFileAppender. Il existe toutefois des restrictions :
En mode prudent, la compression des fichiers n'est pas autorisée. Une instance ne peut pas écrire lorsqu'une compression est effectuée par une autre instance.
La propriété de fichier de FileAppender doit être vide. La plupart des systèmes d'exploitation ne permettent pas de renommer un fichier lorsqu'il est utilisé par un autre processus.
Dans l'exemple suivant, RollingFileAppender est configuré avec SizeAndTimeBasedRollingPolicy en mode cluster :
<!-- 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 mode serveur unique, le fichier journal actif est placé dans {ThingworxStorage}/logs et le fichier substitué se trouvera dans {ThingworxStorage}/logs/archive.
Dans l'exemple suivant, RollingFileAppender est configuré avec SizeAndTimeBasedRollingPolicy en mode serveur unique :
<!-- 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>
Est-ce que cela a été utile ?