配置日志记录
默认的
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 日志记录库与控制台和滚动文件附件器配合使用。这两个附件器均采用异步附件器进行封装,此附件器可用于断开日志请求者与实际日志写入的连接。日志请求者调用
AsyncAppender
上的
append(logEvent)
方法。此方法会将
logEvent
添加到
AsyncAppender
中的内部队列。因此,日志请求者可以继续其工作,而不必等待
logEvent
写入目标控制台或文件。在
AsyncAppender
中,内部线程从内部队列中拾取最早的
logEvent
并调用包含日志附件器控制台或文件上的
append(LogEvent)
。内部队列也可用作缓冲区,用于在每秒钟日志记录请求数超出内部附件器写入速度时防止活动内短脉冲期间丢失数据。有关详细信息,请参阅
https://logback.qos.ch/manual/appenders.html
。
您可以在
logback.xml
文件中配置
AsyncAppender
的下列参数:
您可以通过设置关联的环境变量来更改默认值。如果在 Eclipse 中运行服务器,则需要在
Run configuration/server/environment
中设置环境变量。
通过环境变量指定的值仅在服务器启动时才会被选取。因此,如果要在启动服务器后更改任何值,则必须重新启动该服务器。
用于滚动文件和存档的默认 logback 配置设置如下。您可以在 Composer 中的
>
>
>
下配置这些设置。
群集模式与单一服务器模式
在群集模式下,将会有多个实例将其日志写入单个文件中。要实现此目的,必须在
RollingFileAppender
配置中启用
prudent
标志;但存在以下限制:
•
在
prudent
模式下,不允许压缩文件。一个实例进行压缩时,另一个实例无法写入。
•
FileAppender
的文件属性必须为空白。大多数操作系统不允许文件在另一进程中打开的情况下对其进行重命名。
以下是通过
SizeAndTimeBasedRollingPolicy
在群集模式下配置
RollingFileAppender
的示例:
<!-- 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
下。
以下是通过
SizeAndTimeBasedRollingPolicy
在单一服务器模式下配置
RollingFileAppender
的示例:
<!-- 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>