• cherrypy 打印日志


    code

    cherrypy.log("hello there")

    test.py

    import logging
    import logging.config
    
    
    import cherrypy
    
    
    logger = logging.getLogger()
    db_logger = logging.getLogger('db')
    
    
    LOG_CONF = {
        'version': 1,
    
    
        'formatters': {
            'void': {
                'format': ''
            },
            'standard': {
                'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
            },
        },
        'handlers': {
            'default': {
                'level':'INFO',
                'class':'logging.StreamHandler',
                'formatter': 'standard',
                'stream': 'ext://sys.stdout'
            },
            'cherrypy_console': {
                'level':'INFO',
                'class':'logging.StreamHandler',
                'formatter': 'void',
                'stream': 'ext://sys.stdout'
            },
            'cherrypy_access': {
                'level':'INFO',
                'class': 'logging.handlers.RotatingFileHandler',
                'formatter': 'void',
                'filename': 'access.log',
                'maxBytes': 10485760,
                'backupCount': 20,
                'encoding': 'utf8'
            },
            'cherrypy_error': {
                'level':'INFO',
                'class': 'logging.handlers.RotatingFileHandler',
                'formatter': 'void',
                'filename': 'errors.log',
                'maxBytes': 10485760,
                'backupCount': 20,
                'encoding': 'utf8'
            },
        },
        'loggers': {
            '': {
                'handlers': ['default'],
                'level': 'INFO'
            },
            'db': {
                'handlers': ['default'],
                'level': 'INFO' ,
                'propagate': False
            },
            'cherrypy.access': {
                'handlers': ['cherrypy_access'],
                'level': 'INFO',
                'propagate': False
            },
            'cherrypy.error': {
                'handlers': ['cherrypy_console', 'cherrypy_error'],
                'level': 'INFO',
                'propagate': False
            },
        }
    }
    
    
    class Root(object):
        @cherrypy.expose
        def index(self):
    
    
            logger.info("boom")
            db_logger.info("bam")
            cherrypy.log("bang")
    
    
            return "hello world"
    
    
    if __name__ == '__main__':
        cherrypy.config.update({'log.screen': False,
                                'log.access_file': '',
                                'log.error_file': ''})
    cherrypy.engine.unsubscribe('graceful', cherrypy.log.reopen_files)
        logging.config.dictConfig(LOG_CONF)
        cherrypy.quickstart(Root())

    output

    macname@MacdeMacBook-Pro cherry % python3 test.py
    [21/Jan/2020:01:04:15] ENGINE Listening for SIGTERM.
    [21/Jan/2020:01:04:15] ENGINE Listening for SIGHUP.
    [21/Jan/2020:01:04:15] ENGINE Listening for SIGUSR1.
    [21/Jan/2020:01:04:15] ENGINE Bus STARTING
    CherryPy Checker:
    The Application mounted at '' has an empty config.
    
    [21/Jan/2020:01:04:15] ENGINE Started monitor thread 'Autoreloader'.
    [21/Jan/2020:01:04:15] ENGINE Serving on http://127.0.0.1:8080
    [21/Jan/2020:01:04:15] ENGINE Bus STARTED
    2020-01-21 01:05:28,432 [INFO] root: boom
    2020-01-21 01:05:28,432 [INFO] db: bam
    [21/Jan/2020:01:05:28]  bang

  • 相关阅读:
    linux入门_韩顺平_复习版_用户管理
    linux入门_韩顺平_复习版_开启、重启、用户登陆注销
    python入门_老男孩_列表的增删查改
    git入门_尚硅谷_git简介
    码农要求_python豆瓣_2018校招
    python入门_老男孩_数据类型简介_int/bool/str转换_字符串索引和切片_字符串操作_day3
    LeetCode--链表3-经典问题
    LeetCode--链表2-双指针问题
    LeetCode--链表1-单链表
    LeetCode---二叉树3-总结例题
  • 原文地址:https://www.cnblogs.com/sea-stream/p/14179332.html
Copyright © 2020-2023  润新知