【问题标题】:How to change the default sanic log directory to a custom directory?如何将默认的 sanic 日志目录更改为自定义目录?
【发布时间】:2018-03-14 05:59:01
【问题描述】:

Sanic 目前支持 Linux 日志目录为 /dev/log,如果该目录不存在,日志将无法工作。如何将目录更改为自定义目录?

【问题讨论】:

    标签: python-3.x sanic


    【解决方案1】:

    Sanic 使用常规的standard library logging 实用程序。

    根据文档:

    要使用您自己的日志记录配置,只需使用logging.config.dictConfig,或在初始化Sanic 应用程序时传递log_config

    app = Sanic('test', log_config=LOGGING_CONFIG)
    
    # or
    
    logging.config.dictConfig(LOGGING_CONFIG)
    

    Here is a good resource on logging in Python.

    您要查找的是 filename 关键字。

    LOGGING_CONFIG = {
        ...
        'filename': '/path/to/my/log'
        ...
    }
    

    【讨论】:

      【解决方案2】:

      查看文档并尝试各种组合后,我发现以下解决方案有效,使用以下 dict 并更改文件路径的值是必要的。

      from sanic.log import DefaultFilter
      import sys
      LOGGING = {
      'version': 1,
      'disable_existing_loggers': False,
      'filters': {
          'accessFilter': {
              '()': DefaultFilter,
              'param': [0, 10, 20]
          },
          'errorFilter': {
              '()': DefaultFilter,
              'param': [30, 40, 50]
          }
      },
      'formatters': {
          'simple': {
              'format': '%(asctime)s - (%(name)s)[%(levelname)s]: %(message)s',
              'datefmt': '%Y-%m-%d %H:%M:%S'
          },
          'access': {
              'format': '%(asctime)s - (%(name)s)[%(levelname)s][%(host)s]: ' +
                        '%(request)s %(message)s %(status)d %(byte)d',
              'datefmt': '%Y-%m-%d %H:%M:%S'
          }
      },
      'handlers': {
          'internalFile': {
              'class': 'logging.FileHandler',
              'filters': ['accessFilter'],
              'formatter': 'simple',
              'filename': "temp/clickinternal.log"
          },
          'accessFile': {
              'class': 'logging.FileHandler',
              'filters': ['accessFilter'],
              'formatter': 'access',
              'filename': "temp/clickaccess.log"
          },
          'errorFile': {
              'class': 'logging.FileHandler',
              'filters': ['errorFilter'],
              'formatter': 'simple',
              'filename': "temp/clickerr.log"
          },
          'internal': {
              'class': 'logging.StreamHandler',
              'filters': ['accessFilter'],
              'formatter': 'simple',
              'stream': sys.stderr
          },
          'accessStream': {
              'class': 'logging.StreamHandler',
              'filters': ['accessFilter'],
              'formatter': 'access',
              'stream': sys.stderr
          },
          'errorStream': {
              'class': 'logging.StreamHandler',
              'filters': ['errorFilter'],
              'formatter': 'simple',
              'stream': sys.stderr
          }
      },
      'loggers': {
          'sanic': {
              'level': 'DEBUG',
              'handlers': ['internal','errorStream','internalFile', 'errorFile']
          },
          'network': {
              'level': 'DEBUG',
              'handlers': ['accessStream','errorStream','accessFile', 'errorFile']
          }
      }
      }
      
      
      
      app.run(debug=True,log_config=LOGGING, host='0.0.0.0', port='8001')
      

      【讨论】:

        猜你喜欢
        • 2023-03-21
        • 1970-01-01
        • 2014-07-20
        • 2018-08-22
        • 1970-01-01
        • 2020-08-06
        • 1970-01-01
        • 1970-01-01
        • 2021-12-24
        相关资源
        最近更新 更多