我正在尝试将自己的日志文件写入 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)
