码
我正在使用日志记录模块来创建日志文件。它检查平台并提供根据平台创建日志文件的方法
import os,platform,logging
if platform.platform('windows'):
logging_file=os.path.join(os.getenv('HOMEDRIVE'),os.getenv('HOMEPATH'),'test.log')
else:
logging_file = os.path.join(os.getenv('HOME'),'test.log')
print"logging to",logging_file
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s : %(levelname)s :%(message)s',filename=logging_file, filemode='w')
logging.DEBUG("start of the program")
logging.info("doing something")
logging.warning("u are gonna die")
答案 0 :(得分:3)
您提供的代码没有正确缩进,您应该使用logging.debug
而不是logging.DEBUG
,因为后者是用于表示日志级别的整数常量。这是更新的代码
import os,platform,logging
if platform.platform('windows'):
logging_file=os.path.join(os.getenv('HOMEDRIVE'),os.getenv('HOMEPATH'),'test.log')
else:
logging_file = os.path.join(os.getenv('HOME'),'test.log')
print"logging to",logging_file
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s : %(levelname)s :%(message)s',
filename=logging_file,
filemode='w')
logging.debug("start of the asdfasdfprogram")
logging.info("doing something")
logging.warning("u are gonna die")
答案 1 :(得分:2)
也许你正在使用unix系统,下面的陈述是错误的 -
platform.platform('windows')
platform.platform
函数总是将底层平台作为字符串返回,稍后您将直接测试string
in if条件,它将始终返回true,因此它始终假定您在Windows系统中
你需要一个像 -
这样的条件if 'windows' in platform.platform().lower():
另外,正如k4vin所说 - 如果这不是一个类型你应该使用logging.debug
而不是logging.DEBUG
,第一个是函数,其中第二个是用来表示记录级别DEBUG
。
logging.debug("start of the program")
答案 2 :(得分:0)
在创建basicconfig
之前,应该清除日志记录处理程序<强>代码强>
import os,platform,logging
if 'windows' in platform.platform().lower():
logging_file=os.path.join(os.getenv('HOMEDRIVE'),os.getenv('HOMEPATH'),'test.log')
else:
logging_file = os.path.join(os.getenv('HOME'),'test.log')
print"logging to",logging_file
logging.getLogger('').handlers = []
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s : %(levelname)s :%(message)s',filename=logging_file, filemode='w')
logging.DEBUG("start of the program")
logging.info("doing something")
logging.warning("u are gonna die")
您可以查看此link以获取更多信息