11.5.7. 配置套接字日志处理程序
本节介绍如何使用管理 CLI 配置套接字日志处理程序,它可用于通过套接字发送消息。这可以是 TCP 或 UDP 套接字。您还可以使用管理控制台配置套接字日志处理程序,方法是导航到 Configuration
如果服务器以 admin-only 模式启动,则会丢弃日志消息。
配置套接字日志处理器时要执行的主要任务有:
如果您要为日志记录配置集配置此日志处理程序,则命令的开头为 /subsystem=logging/logging-profile=LOGGING_PROFILE_NAME/
而不是 /subsystem=logging/
。
此外,如果您在受管域中运行,请在命令前加上 /profile=PROFILE_NAME
。
添加 Socket Binding
定义 remote-destination-outbound-socket-binding
或 local-destination-outbound-socket-binding
,作为 要使用的套接字绑定。
/socket-binding-group=SOCKET_BINDING_GROUP/remote-destination-outbound-socket-binding=SOCKET_BINDING_NAME:add(host=HOST, port=PORT)
添加日志格式
定义要使用的日志格式器,如 JSON 格式器。
/subsystem=logging/json-formatter=FORMATTER:add
添加套接字日志处理程序
在添加套接字日志处理程序时,您必须指定要使用的套接字绑定和格式化器。
/subsystem=logging/socket-handler=SOCKET_HANDLER_NAME:add(outbound-socket-binding-ref=SOCKET_BINDING_NAME,named-formatter=FORMATTER)
配置套接字日志处理程序设置
根据您的需要,您可能需要设置以下一个或多个套接字日志处理程序属性:有关可用套接字日志处理程序属性及其描述的完整列表,请参阅 Socket Log Handler Attributes。
设置协议.
设置要使用的协议。默认值为
TCP
。/subsystem=logging/socket-handler=SOCKET_HANDLER_NAME:write-attribute(name=protocol,value=PROTOCOL)
设置日志级别。
为处理程序设置适当的日志级别。默认值为
ALL
。有关所有可用选项,请参阅日志级别。/subsystem=logging/socket-handler=SOCKET_HANDLER_NAME:write-attribute(name=level,value=LEVEL)
注意在服务器启动期间,套接字日志处理程序处理的日志消息排入队列,直到配置了套接字绑定并且初始化
logging
子系统。如果日志级别设置为低级别,如TRACE
或DEBUG
,这可能会导致启动时消耗大量内存。设置编码.
设置处理程序的编码,如
utf-8
。/subsystem=logging/socket-handler=SOCKET_HANDLER_NAME:write-attribute(name=encoding,value=ENCODING)
设置自动刷新.
设置是否在每次写入后自动清空。默认值为
true
。/subsystem=logging/socket-handler=SOCKET_HANDLER_NAME:write-attribute(name=autoflush,value=AUTO_FLUSH)
设置过滤器表达式。
设置表达式,以过滤处理程序的日志消息。务必用引号转义任何逗号和引号。例如,对于过滤器表达式
not
(match("WFLY"),需要将以下
WFLY\")"。FILTER_EXPRESSION
可替换变量替换为"not(match(\"/subsystem=logging/socket-handler=SOCKET_HANDLER_NAME:write-attribute(name=filter-spec, value=FILTER_EXPRESSION)
有关可用过滤器表达式的更多信息,请参阅 Filter Expressions 部分。
将 Socket Log Handler 分配给 Logger
要激活日志处理程序,您必须将其分配到日志记录器。
以下管理 CLI 命令将套接字日志处理程序分配到根日志记录器:
/subsystem=logging/root-logger=ROOT:add-handler(name=SOCKET_HANDLER_NAME)
以下管理 CLI 命令将套接字日志处理程序分配给名称由 CATEGORY
指定的日志记录器:
/subsystem=logging/logger=CATEGORY:add-handler(name=SOCKET_HANDLER_NAME)
删除套接字日志处理程序
可以使用 remove
操作移除日志处理程序。如果当前分配给日志记录器或异步日志处理程序,则无法移除日志处理程序。
/subsystem=logging/socket-handler=SOCKET_HANDLER_NAME:remove
使用 SSL/TLS 通过套接字发送日志消息
下列步骤演示了如何设置套接字日志处理程序以使用 SSL_TCP
协议通过套接字发送日志消息的示例。本例在 elytron
子系统中配置密钥存储、信任管理器和客户端 SSL 上下文,供套接字日志处理程序使用。来自根日志记录器的日志消息通过指定的套接字发送,格式为 JSON 格式。
有关配置 Elytron 组件的更多信息,请参阅如何为 JBoss EAP 配置服务器安全性的 Elytron Subsystem。
配置 Elytron 设置。
添加 密钥存储。
/subsystem=elytron/key-store=log-server-ks:add(path=/path/to/keystore.jks, type=JKS, credential-reference={clear-text=mypassword})
添加信任管理器。
/subsystem=elytron/trust-manager=log-server-tm:add(key-store=log-server-ks)
添加客户端 SSL 上下文。
/subsystem=elytron/client-ssl-context=log-server-context:add(trust-manager=log-server-tm, protocols=["TLSv1.2"])
添加套接字绑定。
/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=log-server:add(host=localhost, port=4560)
添加 JSON 格式器。
/subsystem=logging/json-formatter=json:add
添加 socket 日志处理程序。
/subsystem=logging/socket-handler=log-server-handler:add(named-formatter=json, level=INFO, outbound-socket-binding-ref=log-server, protocol=SSL_TCP, ssl-context=log-server-context)
将日志处理程序分配到根日志记录器。
/subsystem=logging/root-logger=ROOT:add-handler(name=log-server-handler)