我正在尝试在目录patchsetcreatedlogs
下创建日志文件,但是使用以下代码将日志文件创建为patchsetcreatedlogspatchset_created_hook_log_11122018_114810.txt
我希望filw patchset_created_hook_log_11122018_114810.txt
在patchsetcreatedlogs
下创建,我哪里出错了?
import time,os,logging
# setup logging
patchsetcreatedlog = 'patchset_created_hook_log_' + time.strftime("%m%d%Y") + '_' + time.strftime("%H%M%S") + '.txt'
log = os.path.join(os.path.dirname(os.path.realpath(__file__)),'patchsetcreatedlogs' + patchsetcreatedlog)
logger = logging.getLogger(__name__)
#logger.setLevel(logging.DEBUG)
logger.setLevel(10)
ch = logging.StreamHandler()
#ch.setLevel(logging.DEBUG)
ch.setLevel(10)
formatter = logging.Formatter('%(asctime)s %(filename)-15s %(funcName)-20s %(lineno)-5s %(levelname)-8s: %(message)s', datefmt="%Y-%m-%d %H:%M:%S")
ch.setFormatter(formatter)
logger.addHandler(ch)
fh = logging.FileHandler(log, 'w')
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
logger.addHandler(fh)
patchsetcreatedlogspatchset_created_hook_log_11122018_114810.txt
答案 0 :(得分:2)
os.path.join
并不是问题,只是这样做:
'patchsetcreatedlogs' + patchsetcreatedlog
您要添加2个字符串,而不是将它们传递到join
的参数中(可以接受任意数量的参数,而不仅仅是2个)。因此,没有添加路径分隔符。
此外,这里不需要os.path.realpath
。模块的路径是简单路径或名称。因此,只需将其删除。
os.path.join(os.path.dirname(os.path.realpath(__file__)),'patchsetcreatedlogs' + patchsetcreatedlog)
应为:
os.path.join(os.path.dirname(__file__),'patchsetcreatedlogs', patchsetcreatedlog)
(如果__file__
只是文件名,dirname
返回一个空字符串,而join
则忽略它,因此它仍然可以工作)