为flask应用程序配置graylog日志处理程序和中间件

Flask-Graylog的Python项目详细描述


这是一个Flask扩展,允许您配置一个Graylog日志处理程序,并配置中间件将每个请求/响应记录到graylog。

安装

您可以通过pip安装它

pip install Flask-Graylog

用法

您只需导入并初始化应用程序即可

# Import dependenciesfromflaskimportFlaskfromflask.ext.graylogimportGraylog# Configure app and Graylog loggerapp=Flask(__name__)graylog=Graylog(app)# Log to grayloggraylog.info('Message',extra={'extra':'metadata',})# Use graylog log handler in another loggerimportlogginglogger=logging.getLogger(__name__)logger.addHandler(graylog.handler)logger.info('Message')

配置选项

以下选项可用于配置灰色日志记录器。

fromflaskimportFlaskfromflask.ext.graylogimportGraylogapp=Flask(__name__)# Use configuration from `app`app.config['GRAYLOG_HOST']='10.1.1.1'graylog=Graylog(app)# Provide configurationconfig={'GRAYLOG_HOST':'10.1.1.1'}graylog=Graylog(app,config=config)
  • GRAYLOG_HOST-要向[默认值:'localhost']发送消息的主机
  • GRAYLOG_PORT-发送消息的端口[默认值:12201]
  • GRAYLOG_FACILITY-要使用[默认值:'flask']报告的工具
  • GRAYLOG_EXTRA_FIELDS-是否包含每条消息中的额外数据[默认值:true]
  • GRAYLOG_ADD_DEBUG_FIELDS-是否应在每条消息中添加额外的python调试字段[默认值:true]
  • GRAYLOG_CONFIGURE_MIDDLEWARE-是否设置中间件来记录每个响应[默认值:true]

示例消息格式

{"_process_name":"MainProcess","_request":{"content_length":"","remote_addr":"127.0.0.1","headers":{"upgrade_insecure_requests":"1","connection":"keep-alive","accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8","dnt":"1","host":"localhost:5000","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36","accept_language":"en-US,en;q=0.8,ms;q=0.6","cache_control":"max-age=0","accept_encoding":"gzip, deflate, sdch"},"path_info":"/","content_type":"","query_string":"","method":"GET"},"level":6,"_logger":"flask_graylog","timestamp":1460502169.950895,"_pid":6010,"facility":"flask","_function":"after_request","_thread_name":"Thread-1","host":"voltaire.local","version":"1.0","file":"Flask-Graylog/flask_graylog.py","full_message":"Finishing request for \"GET http://localhost:5000/\" from -","line":130,"_response":{"headers":{"content_length":"6","content_type":"text/html; charset=utf-8"},"time_ms":0,"status_code":200},"_flask":{"view_args":{},"endpoint":"root"},"short_message":"Finishing request for \"GET http://localhost:5000/\" from -"}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在Java中超时Future而不使用Future。get()是阻塞操作吗?   使用CXF 2.7.17部署到WebSphere 8.5.5.6的java问题   为什么是布尔。类是java。lang.课堂和字符串。类是java。串?   java是验收测试SOAP Web服务的最佳方法?   java如何替换kotlin中的::new?   字符串LastIndexOf和java。lang.IndexOutOfBoundsException   java移动游戏窗口在其他窗口前面LibGDX   java如何构建真正本地的ApacheSpark“胖”jar。JRE内存问题?   JavaGSON更新json文件   java如何替换字符串中的所有#{key}?   java应用程序没有在Android Pie中获取MySQL数据库   java是否可以在JavaDoc中重用@param描述?   java在MangedBean clsass中的任何@Autowired注入都不起作用,它总是等于NULL吗?   java当我为登录用户创建会话时,如何在struts2中维护hibernate会话?   按反向日期排列的java排序适配器ArrayList   Mockito中带doNothing()的java非类方法?