使用漂亮的记录器编写代码
RewriteEngine On
RewriteRule ^(.*)$ http://new-domain.dk/$1 [R=301]
按预期工作。使用import logging
def init_logging():
logFormatter = logging.Formatter("[%(asctime)s] %(levelname)s::%(module)s::%(funcName)s() %(message)s")
rootLogger = logging.getLogger()
LOG_DIR = os.getcwd() + '/' + 'logs'
if not os.path.exists(LOG_DIR):
os.makedirs(LOG_DIR)
fileHandler = logging.FileHandler("{0}/{1}.log".format(LOG_DIR, "g2"))
fileHandler.setFormatter(logFormatter)
rootLogger.addHandler(fileHandler)
rootLogger.setLevel(logging.DEBUG)
consoleHandler = logging.StreamHandler()
consoleHandler.setFormatter(logFormatter)
rootLogger.addHandler(consoleHandler)
return rootLogger
logger = init_logging()
日志记录到文件和控制台。
在第二步中,您希望导入 外部模块,该模块也使用日志记录模块进行日志记录:
logger.debug("Hello! :)")
(或任何其他外部模块)pip3 install pymisp
(或任何其他外部模块)from pymisp import PyMISP
(或任何其他...)现在发生的是,导入模块的每个调试日志输出都被记录到日志文件和控制台。 现在的问题是,如何为导入的模块设置不同(更高)的日志级别。
答案 0 :(得分:6)
大多数使用日志记录的第三方模块实现了一个记录器,并将其存储在模块级别的logger
或_log
变量中。这意味着您可以提取记录器并根据您的需要进行调整。在你的情况下:
import logging
import pymisp
pymisp.logger.setLevel(logging.INFO)
# code of module goes here
答案 1 :(得分:0)
我的一位同事帮助解决了这个问题:
yourLogger = logging.getLogger('your_logger')
为每个处理程序添加过滤器可防止它们打印/保存除您之外的其他日志
for handler in logging.root.handlers:
handler.addFilter(logging.Filter('your_logger'))