配置記錄
* 
在 ThingWorx 8.5.7 及更新版本中,外部記錄器會取代內部預設記錄器。在之前版本中,已合併外部與預設記錄器。
預設的 internal-logback.xml 檔案是 ThingWorx .war 檔案的一部份,可用來配置 logback 子系統。先解壓縮 Thingworx.war 檔案,然後再解壓縮 WEB_INF/lib/thingworx-platform-common-[version_number].jar,即可找到此檔案。
您可以將 internal-logback.xml 複製到 /ThingworxPlatform/logback.xml 並進行變更。這些 logback.xml 檔案不會相互堆疊或繼承。然後,您可以將更新的檔案置於每個 ThingWorx 實例的 ThingWorx 組態目錄 default/ThingworxPlatform 中。
將記錄層級變更為 DEBUG
您可變更項目以強制將特定類別的記錄層級設定為 DEBUG。例如,您可以將下列項目:
<logger name="org.springframework.security" level="INFO" additivity="false">
<appender-ref ref="ASYNC_APPENDER_SECURITY"/>
</logger>
變更為包含 level="DEBUG" 的下列項目:
<logger name="org.springframework.security" level="DEBUG" additivity="false">
<appender-ref ref="ASYNC_APPENDER_SECURITY"/>
</logger>
或者,您也可以新增具有特定記錄層級的項目。例如:
<logger name="com.thingworx.security.authentication.sso" level="DEBUG" additivity="false">
<appender-ref ref="ASYNC_APPENDER_SECURITY"/>
</logger>
與此類似的封裝層級項目會開啟針對該封裝與子封裝的記錄。
附加器
您可在 <appender-ref ref="[附加器名稱]"/> 中指定正確的附加器,來指定您要在其中顯示資訊的記錄檔。可能的附加器包括:
ASYNC_APPENDER_CONSOLE - 主控台輸出
ASYNC_APPENDER_APPLICATION - 應用程式記錄檔
ASYNC_APPENDER_ERROR - 錯誤記錄檔
ASYNC_APPENDER_SECURITY - 安全性記錄檔
ASYNC_APPENDER_SCRIPT - 指令集記錄檔
ASYNC_APPENDER_SCRIPT_ERROR - 指令集錯誤記錄檔
ASYNC_APPENDER_CONFIGURATION - 組態記錄檔
ASYNC_APPENDER_DATABASE - 資料庫記錄檔
ASYNC_APPENDER_COMMUNICATION - 通訊記錄檔
非同步附加器
ThingWorx 會將 logback 記錄庫與控制台和滾動式檔案附加器搭配使用。這兩個附加器會括在非同步附加器中,這會中斷記錄請求者與實際記錄寫入的連線。記錄請求者會呼叫 AsyncAppenderappend(logEvent) 方法。此方法會將 logEvent 新增至 AsyncAppender 中的內部佇列。因此,記錄請求者可以繼續其工作,而不必等候將 logEvent 寫入至目標控制台或檔案。在 AsyncAppender 中,內部執行緒會挑選內部佇列中最舊的 logEvent,並針對包含的記錄附加器控制台或檔案呼叫 append(LogEvent)。內部佇列也可作為緩衝區使用,它會在每秒的記錄請求數超過內部附加器寫入速度時,防止在活動短暫高載期間發生資料遺失。如需詳細資訊,請參閱 https://logback.qos.ch/manual/appenders.html
您可以在 logback.xml 檔案中,配置 AsyncAppender 的下列參數:
參數
環境變數
基礎類型
預設
描述
queueSize
每個 AsyncAppender 各不相同;請參閱下表
INTEGER
256
封鎖佇列的最大容量。此值會在建立 AsyncAppender 時使用,且無法變更。此值可根據附加器進行設定。
discardingThreshold
DISCARDING_THRESHOLD
INTEGER
0%
依預設,當封鎖佇列的剩餘容量為 20% 時,會捨棄具有 TRACEDEBUGINFO 層級的事件,並保留具有 WARNERROR 層級的事件。欲保留所有事件,請將 discardingThreshold 設定為 0
maxFlushTime
MAX_FLUSH_TIME
INTEGER
1000 ms
佇列排清逾時上限,以毫秒為單位。根據所參考附加器的佇列深度與延遲,AsyncAppender 可能會花費一段無法接受的時間來完全排清佇列。當 LoggerContext 停止時,AsyncAppender 停止方法會等候這段時間結束以完成背景工作執行緒。在此時間內無法處理的事件將遭到捨棄。此值的語義與 Thread.join(long) 的語義相同。
neverBlock
NEVER_BLOCK
BOOLEAN
false
依預設,此參數設定為 false,這表示附加器會阻止附加至完整佇列,而不是遺失訊息。如果您將此參數設定為 true,附加器會捨棄訊息,且不會封鎖您的應用程式。
非同步附加器的佇列大小值
每個 AsyncAppender 都有它自己的queueSize 值,因為記錄器將有不同的負載,且需要不同的佇列大小。
附加器名稱
環境變數
預設
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
您可以設定相關聯的環境變數來變更預設值。如果您在 Eclipse 中執行伺服器,需要在 Run configuration/server/environment 中設定環境變數。
透過環境變數指定的值只會在伺服器啟動期間挑選。因此,如果您要在啟動伺服器之後變更任何值,必須予以重新啟動。
記錄設定
滾動式檔案與封存的預設 logback 組態設定如下。您可以在 Composer 的「子系統」 > LoggingSubsystem > 「組態」 > 「記錄保留設定」下配置這些設定。
記錄保留設定
屬性名稱
預設
描述
「以 KB 計的最大檔案大小」
MAX_FILE_SIZE
100000
每個記錄檔的大小限制
「最大封存日數」
MAX_HISTORY_SIZE
7
記錄檔在封存中保留的天數
「要保留的所有記錄檔的總大小 (GB)」
TOTAL_SIZE_CAP
10
封存中所有記錄檔大小的限制