连接到Gremlin服务器后,我的所有日志消息都重复了。我正在使用以下代码进行连接。
graph = anonymous_traversal.traversal().withRemote(DriverRemoteConnection("ws://localhost:8182/gremlin", "g"))
我猜想gremlin-python API以某种方式启用了根记录器,但是我在哪里找不到它。也许我忽略了一些设置。任何克服该问题的建议都非常欢迎。
这是我用来复制此问题的全部示例代码。
import logging
from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection
from gremlin_python.process import anonymous_traversal
我曾经将其作为脚本的主要入口点进行测试。
if __name__ == '__main__':
设置我的本地记录器实例
logger = logging.getLogger(__name__)
logger.setLevel(logging.getLevelName('DEBUG'))
log_format = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
log_file_handler = logging.FileHandler('foo.log', mode='w')
log_file_handler.setFormatter(log_format)
log_file_handler.setLevel(logging.DEBUG)
logger.addHandler(log_file_handler)
console_log_handler = logging.StreamHandler()
console_log_handler.setLevel(logging.getLevelName('INFO'))
console_log_handler.setFormatter(log_format)
logger.addHandler(console_log_handler)
并在建立连接之前发送一些消息以记录日志。
logger.debug("foo")
logger.info("foo")
logger.warning("and")
logger.error("foo again")
注释/取消注释以下行以进行没有gremlin连接的测试
graph = anonymous_traversal.traversal().withRemote(DriverRemoteConnection("ws://localhost:8182/gremlin", "g"))
最后,在连接后再发送一些消息。
logger.debug("after foo")
logger.info("after foo")
logger.warning("after and")
logger.error("after foo again")
结果是这样的。
2019-04-18 16:09:57,746 - INFO - foo
2019-04-18 16:09:57,746 - WARNING - and
2019-04-18 16:09:57,746 - ERROR - foo again
DEBUG:__main__:after foo
2019-04-18 16:09:59,107 - INFO - after foo
INFO:__main__:after foo
2019-04-18 16:09:59,107 - WARNING - after and
WARNING:__main__:after and
2019-04-18 16:09:59,108 - ERROR - after foo again
ERROR:__main__:after foo again
我认为gremlin应该使用其自己的记录器,并且不应在其他记录器实例的工作中引起任何副作用。
答案 0 :(得分:0)
我找到了一个非常简单的解决方法。不好看。
def non_root_logger():
for handler in logging.root.handlers:
logging.root.removeHandler(handler)
return logging.getLogger(__name__)