1010
1111import logging
1212import sys
13+ import warnings
1314
1415from werkzeug .local import LocalProxy
1516
@@ -56,6 +57,20 @@ def has_level_handler(logger):
5657)
5758
5859
60+ def _has_config (logger ):
61+ """Decide if a logger has direct configuration applied by checking
62+ its properties against the defaults.
63+
64+ :param logger: The :class:`~logging.Logger` to inspect.
65+ """
66+ return (
67+ logger .level != logging .NOTSET
68+ or logger .handlers
69+ or logger .filters
70+ or not logger .propagate
71+ )
72+
73+
5974def create_logger (app ):
6075 """Get the the Flask apps's logger and configure it if needed.
6176
@@ -71,7 +86,21 @@ def create_logger(app):
7186 """
7287 logger = logging .getLogger (app .name )
7388
74- if app .debug and logger .level == logging .NOTSET :
89+ # 1.1.0 changes name of logger, warn if config is detected for old
90+ # name and not new name
91+ for old_name in ("flask.app" , "flask" ):
92+ old_logger = logging .getLogger (old_name )
93+
94+ if _has_config (old_logger ) and not _has_config (logger ):
95+ warnings .warn (
96+ "'app.logger' is named '{name}' for this application,"
97+ " but configuration was found for '{old_name}', which"
98+ " no longer has an effect. The logging configuration"
99+ " should be moved to '{name}'." .format (name = app .name , old_name = old_name )
100+ )
101+ break
102+
103+ if app .debug and not logger .level :
75104 logger .setLevel (logging .DEBUG )
76105
77106 if not has_level_handler (logger ):
0 commit comments