我在log.py中编写了这段代码。
import logging
import os
# make directory
directory = 'logs'
if not os.path.exists(directory):
os.makedirs(directory)
# create logger
logger = logging.getLogger('testfile')
logger.setLevel(logging.DEBUG)
loghandler = logging.FileHandler(directory + '\log.txt')
# create formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# add formatter to loghandler
loghandler.setFormatter(formatter)
# add loghandler to logger
logger.addHandler(loghandler)
现在,用户可以在任何模块中使用它,例如
import log
log.logger.warn("gjh")
答案 0 :(得分:3)
您正在为单个全局对象创建整个模块。如果你想保存代码,只需要一个创建它的函数:
def make_logger():
logger = logging.getLogger('testfile')
# initializations...
# ...
return logger
logger = make_logger()
logger.warn('ghj')
使用关键字参数和默认值,您可以在需要时轻松自定义其创建(并且可能会在您的程序变得更复杂时出现)。
答案 1 :(得分:2)
我看到了一些问题
'\log.txt'
只是因为小写L作为控制字符没有特殊含义。最好使用特定于os的路径构造函数(参见os.path.join)答案 2 :(得分:1)
关于编码风格,我建议使用专用工具。以前有过一些帖子,例如这个帖子:PyLint, PyChecker or PyFlakes?
我个人更喜欢使用pylint
配置文件,以适应我想在项目中遵循的一些事项(例如特殊变量名称)。如果您想快速查看,请尝试pep8
。
最好的问候,Rainer