在尝试实现登录到我的python项目时,我似乎遇到了一些问题.
我只是试图模仿以下配置:
但是,我不想在代码中执行此操作,而是希望将其放在配置文件中.
以下是我的配置文件:
[loggers]
keys=root
[logger_root]
handlers=screen,file
[formatters]
keys=simple,complex
[formatter_simple]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
[formatter_complex]
format=%(asctime)s - %(name)s - %(levelname)s - %(module)s : %(lineno)d - %(message)s
[handlers]
keys=file,screen
[handler_file]
class=handlers.TimedRotatingFileHandler
interval=midnight
backupCount=5
formatter=complex
level=DEBUG
args=('logs/testSuite.log',)
[handler_screen]
class=StreamHandler
formatter=simple
level=INFO
args=(sys.stdout,)
Run Code Online (Sandbox Code Playgroud)
问题是我的屏幕输出看起来像:
2010-12-14 11:39:04,066 - root - 警告 - 3
2010-12-14 11:39:04,066 - root - 错误 - 4
2010-12-14 11:39 :04,066 - root - CRITICAL - 5
我的文件是输出,但看起来与上面相同(尽管包含了额外的信息).但是,调试和信息级别也不会输出.
我在Python 2.7上
这是我显示失败的简单示例:
import os
import sys
import logging
import logging.config
sys.path.append(os.path.realpath("shared/"))
sys.path.append(os.path.realpath("tests/"))
class Main(object):
@staticmethod
def main():
logging.config.fileConfig("logging.conf")
logging.debug("1")
logging.info("2")
logging.warn("3")
logging.error("4")
logging.critical("5")
if __name__ == "__main__":
Main.main()
Run Code Online (Sandbox Code Playgroud)
bde*_*ker 22
看起来您已经为处理程序设置了级别,而不是您的记录器.记录器的级别会在每个消息到达其处理程序之前对其进行过滤,默认值为WARNING高于此值(如您所见).将根记录器的级别设置NOTSET为您所拥有的,并将其设置为DEBUG(或者您希望记录的最低级别)应解决您的问题.
只需添加日志级别即可[logger_root]。这是有效的。
[logger_root]
level=DEBUG
handlers=screen,file
Run Code Online (Sandbox Code Playgroud)
写入终端和文件的简单方法如下:
import logging.config
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(message)s",
handlers=[
logging.FileHandler("log_file.log"),
logging.StreamHandler()
]
)
logger = logging.getLogger(__name__)
Run Code Online (Sandbox Code Playgroud)
然后在您的代码中使用它,如下所示:
logger.info('message')
logger.error('message')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46193 次 |
| 最近记录: |