Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Logs displayed twice.

未关闭
#113 8 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
45/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
停滞
技术栈
flask, python
领域
backend

调研方向

Start with the Server.serve entry point and the logging configuration used by python-livereload when serving the Flask application. Reproduce the example and compare the two output formats; done means each server event is emitted only once while live reload and file watching still work.

由索引模型根据 Issue 内容生成。

描述

I use python-livereload with flask.

@manager.command
def live():
    """
    Starts a development server with live reload enabled.
    """
    server = Server(app.wsgi_app)
    server.watch(module_path + '/static/**/*.*')
    server.watch(module_path + '/templates/*.*')
    server.serve(port=5000)

Unfortunately logs are displayed twice.

[I 150616 14:31:09 server:271] Serving on http://127.0.0.1:5000
Tue, 16 Jun 2015 14:31:09 | INFO     | Serving on http://127.0.0.1:5000
[I 150616 14:31:09 handlers:58] Start watching changes
Tue, 16 Jun 2015 14:31:09 | INFO     | Start watching changes
[I 150616 14:31:09 handlers:60] Start detecting changes
Tue, 16 Jun 2015 14:31:09 | INFO     | Start detecting changes

I can't find any parameters to control logging. Any ideas how I can deal with this ?

Thank you. :)

My logging tree before the serve method is called:

<--""
   Level INFO
   Handler Stream <open file '<stderr>', mode 'w' at 0x7f3c675ce1e0>
     Level DEBUG
     Formatter fmt='%(asctime)s | %(levelname)-8s | %(message)s' datefmt='%a, %d %b %Y %H:%M:%S'
   Handler RotatingFile '/home/tim/Workspace/thedotabot/memories/server_logs.txt' maxBytes=10485760 backupCount=0
     Level DEBUG
     Formatter fmt='%(asctime)s | %(levelname)-8s | %(message)s' datefmt='%a, %d %b %Y %H:%M:%S'
   |
   o<--"alembic"
   |   Level NOTSET so inherits level INFO
   |   Handler <logging.NullHandler object at 0x7f3c62aa6690>
   |   |
   |   o<--[alembic.autogenerate]
   |   |   |
   |   |   o<--"alembic.autogenerate.api"
   |   |   |   Level NOTSET so inherits level INFO
   |   |   |
   |   |   o<--"alembic.autogenerate.compare"
   |   |   |   Level NOTSET so inherits level INFO
   |   |   |
   |   |   o<--"alembic.autogenerate.render"
   |   |       Level NOTSET so inherits level INFO
   |   |
   |   o<--[alembic.ddl]
   |   |   |
   |   |   o<--"alembic.ddl.postgresql"
   |   |       Level NOTSET so inherits level INFO
   |   |
   |   o<--"alembic.migration"
   |   |   Level NOTSET so inherits level INFO
   |   |
   |   o<--"alembic.util"
   |       Level NOTSET so inherits level INFO
   |
   o<--[concurrent]
   |   |
   |   o<--"concurrent.futures"
   |       Level NOTSET so inherits level INFO
   |
   o<--[flask-admin]
   |   |
   |   o<--"flask-admin.sqla"
   |       Level NOTSET so inherits level INFO
   |
   o<--"livereload"
   |   Level NOTSET so inherits level INFO
   |
   o<--[oauth2client]
   |   |
   |   o<--"oauth2client.client"
   |   |   Level NOTSET so inherits level INFO
   |   |
   |   o<--"oauth2client.crypt"
   |   |   Level NOTSET so inherits level INFO
   |   |
   |   o<--"oauth2client.util"
   |       Level NOTSET so inherits level INFO
   |
   o<--"requests"
   |   Level NOTSET so inherits level INFO
   |   Handler <logging.NullHandler object at 0x7f3c611c7910>
   |   |
   |   o<--[requests.packages]
   |       |
   |       o<--"requests.packages.urllib3"
   |           Level NOTSET so inherits level INFO
   |           Handler <logging.NullHandler object at 0x7f3c611c7890>
   |           |
   |           o<--"requests.packages.urllib3.connectionpool"
   |           |   Level NOTSET so inherits level INFO
   |           |
   |           o<--"requests.packages.urllib3.poolmanager"
   |           |   Level NOTSET so inherits level INFO
   |           |
   |           o<--[requests.packages.urllib3.util]
   |               |
   |               o<--"requests.packages.urllib3.util.retry"
   |                   Level NOTSET so inherits level INFO
   |
   o<--"sqlalchemy"
   |   Level WARNING
   |   |
   |   o<--[sqlalchemy.dialects]
   |   |   |
   |   |   o<--"sqlalchemy.dialects.postgresql"
   |   |       Level NOTSET so inherits level WARNING
   |   |
   |   o<--[sqlalchemy.orm]
   |       |
   |       o<--[sqlalchemy.orm.dynamic]
   |       |   |
   |       |   o<--"sqlalchemy.orm.dynamic.DynaLoader"
   |       |       Level NOTSET so inherits level WARNING
   |       |
   |       o<--[sqlalchemy.orm.mapper]
   |       |   |
   |       |   o<--"sqlalchemy.orm.mapper.Mapper"
   |       |       Level NOTSET so inherits level WARNING
   |       |
   |       o<--"sqlalchemy.orm.path_registry"
   |       |   Level NOTSET so inherits level WARNING
   |       |
   |       o<--[sqlalchemy.orm.properties]
   |       |   |
   |       |   o<--"sqlalchemy.orm.properties.ColumnProperty"
   |       |       Level NOTSET so inherits level WARNING
   |       |
   |       o<--[sqlalchemy.orm.query]
   |       |   |
   |       |   o<--"sqlalchemy.orm.query.Query"
   |       |       Level NOTSET so inherits level WARNING
   |       |
   |       o<--[sqlalchemy.orm.relationships]
   |       |   |
   |       |   o<--"sqlalchemy.orm.relationships.RelationshipProperty"
   |       |       Level NOTSET so inherits level WARNING
   |       |
   |       o<--[sqlalchemy.orm.strategies]
   |           |
   |           o<--"sqlalchemy.orm.strategies.ColumnLoader"
   |           |   Level NOTSET so inherits level WARNING
   |           |
   |           o<--"sqlalchemy.orm.strategies.DeferredColumnLoader"
   |           |   Level NOTSET so inherits level WARNING
   |           |
   |           o<--"sqlalchemy.orm.strategies.JoinedLoader"
   |           |   Level NOTSET so inherits level WARNING
   |           |
   |           o<--"sqlalchemy.orm.strategies.LazyLoader"
   |           |   Level NOTSET so inherits level WARNING
   |           |
   |           o<--"sqlalchemy.orm.strategies.NoLoader"
   |           |   Level NOTSET so inherits level WARNING
   |           |
   |           o<--"sqlalchemy.orm.strategies.SubqueryLoader"
   |               Level NOTSET so inherits level WARNING
   |
   o<--"stripe"
   |   Level NOTSET so inherits level INFO
   |
   o<--[tornado]
       |
       o<--"tornado.access"
       |   Level NOTSET so inherits level INFO
       |
       o<--"tornado.application"
       |   Level NOTSET so inherits level INFO
       |
       o<--"tornado.general"
           Level NOTSET so inherits level INFO
主要语言
Python
星标
1.1k
派生
149
PR 合并指标
30 天内没有已合并 PR

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

lepture/python-livereload 的其他 Issue

查看 lepture/python-livereload 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。