Definizione del modello ThingWorx in Composer > Sistema > Log > Configurazione della registrazione
Configurazione della registrazione
Un file internal-logback.xml di default fa parte del file .war ThingWorx e viene utilizzato per configurare il sottosistema di logback. Per trovare il file, decomprimere il file Thingworx.war, quindi il file WEB_INF/lib/thingworx-platform-common-[numero_versione].jar.
È possibile copiare il file internal-logback.xml in /ThingworxPlatform/logback.xml e apportare le modifiche. Questi file logback.xml non vengono impilati e non ereditano l'uno dall'altro. Il file aggiornato può essere quindi inserito nella directory di configurazione di ThingWorx default/ThingworxPlatform per ogni istanza di ThingWorx.
Modifica del livello di registrazione per il DEBUG
È possibile modificare una voce per imporre il DEBUG del livello di registrazione di una classe specifica. È ad esempio possibile modificare il codice seguente:
<logger name="org.springframework.security" level="INFO" additivity="false">
<appender-ref ref="ASYNC_APPENDER_SECURITY"/>
</logger>
come segue con level="DEBUG":
<logger name="org.springframework.security" level="DEBUG" additivity="false">
<appender-ref ref="ASYNC_APPENDER_SECURITY"/>
</logger>
In alternativa, è possibile aggiungere una nuova voce con il livello di registrazione specifico. Ad esempio:
<logger name="com.thingworx.security.authentication.sso" level="DEBUG" additivity="false">
<appender-ref ref="ASYNC_APPENDER_SECURITY"/>
</logger>
Una voce a livello di package di questo tipo attiva la registrazione per il package e i package secondari.
Appender
È possibile specificare in quale log si desidera visualizzare le informazioni specificando l'appender appropriato in <appender-ref ref="[nome appender]"/>. Gli appender possibili sono:
ASYNC_APPENDER_CONSOLE - output console
ASYNC_APPENDER_APPLICATION - log applicazioni
ASYNC_APPENDER_ERROR - log degli errori
ASYNC_APPENDER_SECURITY - log di protezione
ASYNC_APPENDER_SCRIPT - log degli script
ASYNC_APPENDER_SCRIPT_ERROR - log degli errori di script
ASYNC_APPENDER_CONFIGURATION - log di configurazione
ASYNC_APPENDER_DATABASE - log del database
ASYNC_APPENDER_COMMUNICATION - log di comunicazione
Appender asincrono
ThingWorx utilizza la libreria di registrazione di logback con gli appender del file di rolling e della console. Entrambi gli appender vengono sottoposti a wrapping con l'appender asincrono, che disconnette i richiedenti di log dalle scritture di log effettive. I richiedenti di log chiamano il metodo append(logEvent) su AsyncAppender. Questo metodo aggiunge logEvent alla coda interna all'interno di AsyncAppender. Di conseguenza, il richiedente di log può continuare il proprio lavoro senza dover attendere che logEvent venga scritto nel file o nella console di destinazione. In AsyncAppender un thread interno sceglie il logEvent meno recente dalla coda interna e richiama append(LogEvent) sul file o sulla console dell'appender di log. La coda interna funge anche da buffer, che impedisce la perdita di dati durante i brevi burst nell'attività, quando le richieste di registrazione al secondo superano la velocità di scrittura interna dell'appender.Per ulteriori informazioni, vedere https://logback.qos.ch/manual/appenders.html.
È possibile configurare i parametri seguenti per il AsyncAppender nel file logback.xml:
Parametro
Variabile di ambiente
Tipo di base
Default
Descrizione
queueSize
Diverso per ciascun AsyncAppender; vedere la tabella seguente
INTEGER
256
La capacità massima della coda di blocco. Questo valore viene utilizzato durante la creazione di AsyncAppender e non può essere modificato. Può essere specificato per i singoli appender.
discardingThreshold
DISCARDING_THRESHOLD
INTEGER
0%
Per default, quando la capacità rimanente della coda di blocco è del 20%, vengono eliminati gli eventi con i livelli TRACE, DEBUG e INFO e vengono mantenuti quelli con i livelli WARN e ERROR. Per mantenere tutti gli eventi, impostare discardingThreshold su 0.
maxFlushTime
MAX_FLUSH_TIME
INTEGER
1000 ms
Timeout massimo di svuotamento della coda in millisecondi. A seconda della profondità della coda e della latenza dell'appender referenziato, il tempo necessario ad AsyncAppender per svuotare completamente la coda potrebbe non essere accettabile. Quando l'opzione LoggerContext viene interrotta, il metodo di arresto AsyncAppender attende il tempo necessario per il completamento del thread worker. Gli eventi che non riescono a essere elaborati in questo lasso di tempo vengono eliminati. La semantica di questo valore è identica a quella di Thread.join(long).
neverBlock
NEVER_BLOCK
BOOLEAN
false
Per default, questo parametro è impostato su false, il che significa che, anziché perdere il messaggio, l'appender bloccherà l'aggiunta a una coda completa. Se si imposta su true, l'appender elimina il messaggio e non blocca l'applicazione.
Valori di dimensione coda per appender asincroni
Ciascun AsyncAppender presenta un valore specifico perqueueSize, in quanto i logger dovranno supportare carichi diversi e quindi avere dimensioni di coda diverse.
Nome appender
Variabile di ambiente
Default
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
È possibile modificare i valori di default impostando la variabile di ambiente associata. Se si esegue un server in Eclipse, è necessario impostare le variabili di ambiente in Run configuration/server/environment.
I valori specificati tramite variabili ambientali vengono selezionati solo durante l'avvio del server. Pertanto, se si desidera modificare uno dei valori dopo l'avvio, è necessario riavviare il server.
Impostazioni log
Di seguito sono riportate le impostazioni di configurazione del logback di default per i file di rolling e l'archiviazione. È possibile configurare queste impostazioni in Composer in Sottosistemi > LoggingSubsystem > Configurazione > Impostazioni conservazione log.
Impostazione conservazione log
Nome proprietà
Default
Descrizione
Dimensione file max in KB
MAX_FILE_SIZE
100000
Limite per la dimensione di ciascun file di log
Numero max di giorni di archiviazione
MAX_HISTORY_SIZE
7
Numero di giorni in cui i file di log vengono conservati nell'archivio
Dimensione totale in GB di tutti i file di log da conservare
TOTAL_SIZE_CAP
10
Limite per la dimensione di tutti i file di log nell'archivio
Modalità cluster e modalità server singolo
In modalità cluster più istanze scrivono i rispettivi log in un singolo file. A tale scopo, è necessario attivare il flagprudentnella configurazione diRollingFileAppender,tuttavia esistono le limitazioni elencate di seguito.
In modalità prudent non è consentita la compressione del file. Un'istanza non può scrivere mentre un'altra esegue la compressione.
La proprietà file di FileAppender deve essere vuota. La maggior parte dei sistemi operativi non consente la ridenominazione di un file che risulta aperto in un altro processo.
Nell'esempio seguente RollingFileAppender è configurato con SizeAndTimeBasedRollingPolicyin modalità 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>
In modalità a server singolo il file di log attivo viene posizionato in{ThingworxStorage}/logs e il file sottoposto a rollback si troverà in{ThingworxStorage}/logs/archive.
Nell'esempio seguenteRollingFileAppenderè configurato conSizeAndTimeBasedRollingPolicyin modalità a server singolo:
<!-- 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>
È stato utile?