Skip to main content
 首页 » 编程设计

python之使用 databricks 中的 python 日志记录模块将日志写入 azure datalake 无法正常工作

2025年05月04日11duanxz

我正在尝试将自己的日志文件写入 Databricks 中的 Python-Notebook 中的 Azure Datalake Gen 2。我正在尝试通过使用 Python 日志记录模块来实现这一点。

不幸的是我无法让它工作。没有出现错误,创建了文件夹,但没有创建包含日志内容的文件。即使文件存在,也不会写入任何内容。

本地 python 脚本工作得很好,但我无法让它在 Databricks 中工作。

这是我的代码:

# mount 
if not any(mount.mountPoint == '/mnt/log' for mount in dbutils.fs.mounts()): 
  dbutils.fs.mount( 
    source = "abfss://log@datalake.dfs.core.windows.net/", 
    mount_point = "/mnt/log", 
    extra_configs = configs) 
 
# vars 
folder_log = '/mnt/log/test/2019' 
file_log = '201904.log' 
 
# add folder if not existent 
dbutils.fs.mkdirs(folder_log) 
 
# setup logging 
import logging 
logging.basicConfig( 
  filename=folder_log+'/'+file_log, 
  format='%(asctime)s | %(name)s | %(levelname)s | %(message)s', 
  datefmt='%Y-%m-%d %H:%M:%S UTC (%z)', 
  level=logging.NOTSET 
) 
 
# test 
logging.info('Hello World.') 

安装似乎没问题。

使用 dbutils 添加和写入文件效果很好:

dbutils.fs.put(folder_log+'/'+file_log, 'Hello World.')

像这样写入文件也能正常工作:

f = open('/dbfs/mnt/log/test/2019/201904.log', 'w+') 
f.write("This is line %d\r\n") 
f.close() 

还尝试将“dbfs”添加到路径

filename='/dbfs'+folder_log+'/'+file_log, 

有什么想法吗?

请您参考如下方法:

您可以使用 azure_storage_logging 处理程序:

import logging 
from azure_storage_logging.handlers import BlobStorageRotatingFileHandler 
log = logging.getLogger('service_logger') 
azure_blob_handler = BlobStorageRotatingFileHandler(filename,  
                                                    account_name, 
                                                    account_key, 
                                                    maxBytes, 
                                                    container) 
log.addHandler(azure_blob_handler)