ログの設定
デフォルトの internal-logback.xml ファイルは ThingWorx .war ファイルの一部であり、Logback サブシステムの設定に使用されます。ファイルを検索するには、Thingworx.war ファイルを解凍してから、WEB_INF/lib/thingworx-platform-common-[バージョン番号].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 ログライブラリを使用します。どちらのアペンダーも、実際のログ書き込みからログリクエスタを切り離す非同期アペンダーによってラップされています。ログリクエスタは append(logEvent) メソッドを AsyncAppender に対して呼び出します。このメソッドは AsyncAppender の内部キューに logEvent を追加します。したがって、ログリクエスタは logEvent が宛先コンソールまたはファイルに書き込まれるのを待たずにその作業を続行できます。AsyncAppender で、内部スレッドは内部キューから最も古い logEvent を選択し、格納されているログアペンダーコンソールまたはファイルに対して append(LogEvent) を呼び出します。内部キューはバッファとしても機能します。これにより、アクティビティが一気に増加して 1 秒あたりのログリクエストの数が内部アペンダーの書き込み速度を上回った場合に、データが失われるのを防ぐことができます。詳細については、https://logback.qos.ch/manual/appenders.html を参照してください。
logback.xml ファイルで AsyncAppender の以下のパラメータを設定できます。
パラメータ
環境変数
ベースタイプ
デフォルト
説明
queueSize
AsyncAppender ごとに異なります。下の表を参照してください。
INTEGER
256
ブロッキングキューの最大容量。この値は AsyncAppender の作成時に使用され、変更できません。この値はアペンダーごとに設定できます。
discardingThreshold
DISCARDING_THRESHOLD
INTEGER
0 %
デフォルトでは、ブロッキングキューの残りの容量が 20 % になると、TRACEDEBUG、および INFO レベルのイベントは破棄され、WARN および ERROR レベルのイベントは維持されます。すべてのイベントを維持するには、discardingThreshold0 に設定します。
maxFlushTime
MAX_FLUSH_TIME
INTEGER
1000 ms
最大キューフラッシュタイムアウト (ミリ秒)。キューの深さと参照先アペンダーへの待機時間に応じて、AsyncAppender はキューを完全にフラッシュするのに許容できないほど時間がかかることがあります。LoggerContext が停止すると、AsyncAppender stop メソッドは Worker スレッドが完了するのをこの時間だけ待ちます。この時間内に処理できないイベントは破棄されます。この値のセマンティックは 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
アーカイブ内のすべてのログファイルのサイズ制限
クラスタモードと単一サーバーモードの比較
クラスタモードでは、複数のインスタンスが 1 つのファイルにログを書き込みます。これを実現するには、RollingFileAppender コンフィギュレーションで prudent フラグを有効にする必要がありますが、次のような制限があります。
prudent モードでは、ファイル圧縮は許可されません。あるインスタンスが圧縮している間に別のインスタンスが書き込むことはできません。
FileAppender のファイルプロパティは空白でなければなりません。ほとんどのオペレーティングシステムでは、別のプロセスで開かれているファイルの名前を変更することは許可されていません。
以下の例では、クラスタモードで RollingFileAppenderSizeAndTimeBasedRollingPolicy が設定されています。
<!-- 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>
単一サーバーモードでは、アクティブなログファイルが {ThingworxStorage}/logs に配置され、ロールオーバーファイルが {ThingworxStorage}/logs/archive に配置されます。
以下の例では、単一サーバーモードで RollingFileAppenderSizeAndTimeBasedRollingPolicy が設定されています。
<!-- 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>
これは役に立ちましたか?