我用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")发布于 2011-05-02 14:39:44
您正在为单个全局对象创建一个完整的模块。如果你想保存代码,只需要有一个创建它的函数:
def make_logger():
logger = logging.getLogger('testfile')
# initializations...
# ...
return logger
logger = make_logger()
logger.warn('ghj')有了关键字参数和默认值,如果需要的话,您还可以很容易地自定义它的创建(当您的程序变得更加复杂时,也可能会出现这种情况)。
发布于 2011-05-02 14:50:36
我发现了几个问题
显然,你使用了两个空格进行缩进,而这个is a crime in Python
'\log.txt',因为小写字母L作为控制字符没有特殊意义。最好改用特定于操作系统的路径构造函数(请参阅os.path.join)发布于 2011-05-02 14:49:33
关于编码风格,我建议使用专用工具。以前有过一些帖子,例如这篇:PyLint, PyChecker or PyFlakes?
就我个人而言,我更喜欢将pylint与配置文件一起使用,以适应我希望在项目中遵循的某些内容(例如,特殊变量名)。如果你想快速浏览一下,可以试试pep8。
致以最好的问候,Rainer
https://stackoverflow.com/questions/5854129
复制相似问题