在下面,我想在一个文件中捕获"dask_client_log_msg"和其他任务日志,在一个单独的文件中捕获"dask_worker_log_msg"和其他客户端日志。显然,客户端将在与工人完全不同的进程中运行。所以我需要一个进程应该将其所有消息记录在一个单独的文件中。谢谢!
def my_task():
print("dask_worker_log_msg")
...
client = Client(<scheduler_address>)
future = client.submit(my_task)
print("dask_client_log_msg")
...
您可以使用
Client.get_worker_logs 方法从工作人员那里获取日志。 您还可以从info
窗格中的仪表板下载日志。
如果您尝试实现 Dask 集群并需要它运行的所有作业的日志(包括来自打印或 logger.info 的脚本日志(,这里有一个解决方案:
- 在启动工作线程的 bash 脚本中添加重定向:
dask-worker >> dask_worker.log 2>&1
- 在脚本中,将记录器设置为 dask.distributed,如下所示:
logger = logging.getLogger("distributed.worker")
- 在
.config/dask/distributed.yaml
中配置日志格式
另请参阅如何从 Dask-Yarn 作业中捕获工作线程的日志?