配置日志记录
* 
在 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 日志记录库与控制台和滚动文件附件器配合使用。这两个附件器均采用异步附件器进行封装,此附件器可用于断开日志请求者与实际日志写入的连接。日志请求者调用 AsyncAppender 上的 append(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
存档中所有日志文件的大小限制