首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将默认的sanic日志目录更改为自定义目录?

问如何将默认的sanic日志目录更改为自定义目录?
EN

Stack Overflow用户
提问于 2018-03-14 05:59:01
回答 2查看 3.9K关注 0票数 4

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-15 10:04:25

在浏览了文档并尝试了各种组合之后,我发现下面的解决方案是有效的,必须使用下面的dict和文件路径的更改值。

代码语言:javascript
复制
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')
票数 3
EN

Stack Overflow用户

发布于 2018-03-14 11:43:17

萨尼奇使用常规的logging实用程序。

根据文件:

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

代码语言:javascript
复制
app = Sanic('test', log_config=LOGGING_CONFIG)

# or

logging.config.dictConfig(LOGGING_CONFIG)

下面是关于在Python中登录的一个好资源。

您要寻找的是filename关键字。

代码语言:javascript
复制
LOGGING_CONFIG = {
    ...
    'filename': '/path/to/my/log'
    ...
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49270646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档