我想使用dictConfig,但文档有点抽象.我在哪里可以找到使用的字典的具体,复制+粘贴示例dictConfig?
在Django,我到处都有记录器,目前有硬编码的名字.
对于模块级日志记录(即,在视图函数模块中),我有这样做的冲动.
log = logging.getLogger(__name__)
Run Code Online (Sandbox Code Playgroud)
对于类级别的日志记录(即,在类__init__方法中),我有这样做的冲动.
self.log = logging.getLogger("%s.%s" % (
self.__module__, self.__class__.__name__))
Run Code Online (Sandbox Code Playgroud)
在我解决几十次事件之前,我正在寻找第二意见getLogger("hard.coded.name").
这会有用吗?还有其他人用同样缺乏想象力的方式命名他们的记录器吗?
此外,我应该分解并为此日志定义编写类装饰器吗?
我在这里浏览了python日志类的教程,并没有看到任何可以让我为同一输出制作不同级别的多个日志的东西.最后我想有三个日志:(
<timestamp>_DEBUG.log调试级别)
<timestamp>_INFO.log(信息级别)
<timestamp>_ERROR.log(错误级别)
有没有办法在一个脚本中为同一输入生成多个日志文件?
<-------------更新#1 -------------------------->
所以在实施@ robert的建议时,我现在有一个小问题,可能是由于没有完全理解他的代码中正在做什么.
这是我在scriptRun.py中的代码
import os
import logging
logger = logging.getLogger("exceptionsLogger")
debugLogFileHandler = logging.FileHandler("Debug.log")
errorLogFileHandler = logging.FileHandler("Error.Log")
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
errorLogFileHandler.setFormatter(formatter)
debugLogFileHandler.setFormatter(formatter)
logger.addHandler(debugLogFileHandler)
logger.addHandler(errorLogFileHandler)
class LevelFilter(logging.Filter):
def __init__(self, level):
self.level = level
def filter(self, record):
return record.levelno == self.level
debugLogFileHandler.addFilter(LevelFilter(logging.DEBUG))
errorLogFileHandler.addFilter(LevelFilter(logging.ERROR))
directory = []
for dirpath, dirnames, filenames in os.walk("path\to\scripts"):
for filename in [f for f in filenames if f.endswith(".py")]:
directory.append(os.path.join(dirpath, filename))
for entry in directory:
execfile(entry)
for lists …Run Code Online (Sandbox Code Playgroud)