在Python 2中指定自定义日志Linux文件路径
我正在试图了解日志文件是如何使用的 我知道我可以使用以下方法将日志输出保存到文本文件:在Python 2中指定自定义日志Linux文件路径,python,linux,logging,Python,Linux,Logging,我正在试图了解日志文件是如何使用的 我知道我可以使用以下方法将日志输出保存到文本文件: logging.basicConfig(filename='example.log',level=logging.DEBUG) 从以下文件中我不清楚: 绝对文件名路径是否有效 指定相对路径的正确语法(假设。/example.log有效) 如果我从/home/bob执行此脚本,我如何指定希望将日志文件保存到/tmp目录-使用绝对路径和相对路径 logging.basicConfig(filename='../
logging.basicConfig(filename='example.log',level=logging.DEBUG)
从以下文件中我不清楚:
文件名路径是否有效
。/example.log
有效)/home/bob
执行此脚本,我如何指定希望将日志文件保存到/tmp
目录-使用绝对路径和相对路径
logging.basicConfig(filename='../../tmp/example.log')
有效吗
类似地,
logging.basicConfig(filename='/tmp/example.log')
是否有效?仅说明文件名时,它将写入当前目录。
使用pythonidle,您可以如下检查
>>> import logging
>>> logging.basicConfig(filename='relative.log')
>>> logging.info('test')
C:\Python27\relative.log
我的工作目录是Python27,我在那里有一个名为relative.log的文件,其中包含我记录的消息
当您将文件位置更改为。/relative.log
,我将在Python27的父目录中获得一个新文件。因此,相对路径可用于日志记录:
>>> import logging
>>> logging.basicConfig(filename='../relative.log')
>>> logging.info('test123')
C:\relative.log
而日志记录
模块还支持绝对路径:
>>> logging.basicConfig(filename=r'c:\abs_path.log')
>>> logging.info('test')
C:\abs_path.log
始终最好使用绝对路径,因为显式优于隐式 它们都是有效的。但是相对路径(带..)将根据运行时所在的目录选择不同的文件 因此,当您在
/home/user/projects/python
中运行logger.py
并且文件名为。/log.txt
时,文件将保存在/home/user/projects
中。另一方面,当您在/home/user
中运行脚本时,log.txt
将保存在/home/
中
绝对路径始终有效且更可靠。如果您希望在当前目录中保存文件,我建议您采用以下方法:
basedir = os.path.abspath(os.path.dirname(__file__))
filename = os.path.join(basedir, 'file.txt')
谢谢-这的确是一个愚蠢的问题。我已经验证了绝对路径也可以在Linux环境下使用。注意,如果您在Windows平台上运行绝对路径,您需要在写入路径之前为raw添加
r
,否则它将抛出错误,除非您跳过路径中的每个斜杠