Использование регистрации в сеттере предотвращает фактический вывод журнала - PullRequest
0 голосов
/ 08 февраля 2019

Я решил свою проблему, но я не понимаю, в чем причина проблемы.

cherrypy.config.update({'server.socket_host': '0.0.0.0',
                        'server.socket_port': 9090,
                        })

class DekkoServer(object):

    def __init__(self):

        self.dataSources = {}

        ### Logging
        self.log_path = './logs/server/'
        self.timestamp_str = str(datetime.now())
        self.log_lvl = logging.DEBUG

        logging.basicConfig(filename=self.log_path + 'log_srv-' + self.timestamp_str, level=self.log_lvl)
        logging.info("LOGGING LEVEL: " + str(self.log_lvl))

        #cherrypy.log.error_log.propagate = False
        #cherrypy.log.access_log.propagate = False

    @cherrypy.expose
    def index(self):
        return "Dekko Server Index"

    @property
    def dataSources(self):
        return

    @dataSources.setter
    def dataSources(self, value):
        logging.info("setting self.dataSources" + json.dumps(value))
        self._dataSources = value

if __name__ == '__main__':
    print()
    conf = {
        '/': {
            'tools.sessions.on': True,
            'tools.staticdir.root': os.path.dirname(os.path.realpath(__file__))
        },
        '/website': {
            'tools.staticdir.on': True,
            'tools.staticdir.dir': './website'
        }
    }

    cherrypy.quickstart(DekkoServer(), '/', conf)

При такой точной настройке выход журнала не наблюдается.

Если язакомментируйте строку в сеттере

@dataSources.setter
def dataSources(self, value):
    # commenting this line allows log output as normal
    #logging.info("setting self.dataSources" + json.dumps(value))
    self._dataSources = value

Однако тогда я получаю вывод журнала в соответствующем файле, как и ожидалось.

Почему это так?Я не вижу, что должно быть такого особенного в декораторе, чтобы предотвратить регистрацию.

...