其他功能
强制取消任务
session 对象中提供静态方法 enableJobCancellation()
,用于开启强制取消任务的功能。此功能默认关闭。开启后,通过 “Ctrl+C” 按键等方式终止 API 进程中时,会同时取消所有 session 提交的正在运行的作业。
注意: 目前该功能仅在 Linux 系统生效。
日志重定向
Python API 自 3.0.2.2 起提供了 Logger 对象用于处理 API 程序运行中产生的日志信息和 Session.run 执行脚本中 print 的输出信息。
Logger
Logger 仅提供两种日志记录器:default_logger 和 msg_logger。
- default_logger:API 程序运行中的日志信息,例如序列化错误、网络连接错误等。
import dolphindb as ddb
ddb.logger.default_logger
- msg_logger:通过 Session.run 执行的脚本中的 print 输出信息将返回给 API,由对应的 msg_logger 控制输出行为。每个 Session 都对应一个 msg_logger。
import dolphindb as ddb
s = ddb.Session()
s.msg_logger
日志等级
通过 min_level 属性,可以设置输出日志的等级。日志等级从低到高依次为:DEBUG、INFO(默认值)、WARNING、ERROR。
import dolphindb as ddb
ddb.logger.default_logger.min_level = ddb.logger.Level.ERROR
标准输出
Logger 对象提供如下接口,用于开启或关闭标准输出模式。API 默认开启标准输出。
enable_stdout_sink
def enable_stdout_sink(self) -> None: ...
启用标准输出。
disable_stdout_sink
def disable_stdout_sink(self) -> None: ...
关闭标准输出。
文件输出
API 默认不启用文件输出。可通过以下接口开启或关闭文件输出。
enable_file_sink
def enable_file_sink(self, path: str) -> None: ...
- path:输出文件日志的路径。
启用文件日志输出。执行该函数将会被覆盖之前已经指定的路径。
disable_file_sink
def disable_file_sink(self) -> None: ...
关闭文件日志输出。
自定义输出
Sink
Logger 对象提供 Sink
类。用户可以通过继承该类来实现自定义的输出日志方式。构造 Sink 实例时,需要为其指定名称。
add_sink
def add_sink(self, sink: Sink) -> None: ...
向 Logger 对象中增加自定义 Sink 实例。
remove_sink
def remove_sink(self, name: str) -> None: ...
根据 Sink 实例名称从 Logger 对象中删除对应的 Sink。
list_links
def list_sinks(self) -> List[Sink]: ...
列出当前 Logger 中的所有自定义的 Sink。
使用示例
下面以修改 msg_logger 为例,演示如何通过自定义 Sink 重定向输出。
import dolphindb as ddb
from dolphindb.logger import Sink
msg_list = []
class mySink(Sink):
def handle(self, msg):
msg_list.append(msg.log)
s = ddb.Session()
s.msg_logger.add_sink(mySink("test1"))
s.connect("localhost", 8848, "admin", "123456")
s.run("print(123)")
print("msg: ", msg_list)
""" output:
123
msg: ['123']
"""
以上代码逻辑为:
- 首先,继承
Sink
类实现子类mySink
,并重写其handle
方法,以将接收到的消息保存到 msg_list 中。 - 接着,向 msg_logger 添加一个名为 "test1" 的自定义 Sink 实例
mySink
。 - 最后,执行脚本
print(123)
。由于未关闭标准输出,控制台将显示两行输出:第一行是默认的标准输出,第二行是 msg_list 的内容。