FeatureEnVi: Visual Analytics for Feature Engineering Using Stepwise Selection and Semi-Automatic Extraction Approaches
				https://doi.org/10.1109/TVCG.2022.3141040
			
			
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							78 lines
						
					
					
						
							2.2 KiB
						
					
					
				
			
		
		
	
	
							78 lines
						
					
					
						
							2.2 KiB
						
					
					
				| # -*- coding: utf-8 -*-
 | |
| """
 | |
| flask.logging
 | |
| ~~~~~~~~~~~~~
 | |
| 
 | |
| :copyright: © 2010 by the Pallets team.
 | |
| :license: BSD, see LICENSE for more details.
 | |
| """
 | |
| 
 | |
| from __future__ import absolute_import
 | |
| 
 | |
| import logging
 | |
| import sys
 | |
| 
 | |
| from werkzeug.local import LocalProxy
 | |
| 
 | |
| from .globals import request
 | |
| 
 | |
| 
 | |
| @LocalProxy
 | |
| def wsgi_errors_stream():
 | |
|     """Find the most appropriate error stream for the application. If a request
 | |
|     is active, log to ``wsgi.errors``, otherwise use ``sys.stderr``.
 | |
| 
 | |
|     If you configure your own :class:`logging.StreamHandler`, you may want to
 | |
|     use this for the stream. If you are using file or dict configuration and
 | |
|     can't import this directly, you can refer to it as
 | |
|     ``ext://flask.logging.wsgi_errors_stream``.
 | |
|     """
 | |
|     return request.environ['wsgi.errors'] if request else sys.stderr
 | |
| 
 | |
| 
 | |
| def has_level_handler(logger):
 | |
|     """Check if there is a handler in the logging chain that will handle the
 | |
|     given logger's :meth:`effective level <~logging.Logger.getEffectiveLevel>`.
 | |
|     """
 | |
|     level = logger.getEffectiveLevel()
 | |
|     current = logger
 | |
| 
 | |
|     while current:
 | |
|         if any(handler.level <= level for handler in current.handlers):
 | |
|             return True
 | |
| 
 | |
|         if not current.propagate:
 | |
|             break
 | |
| 
 | |
|         current = current.parent
 | |
| 
 | |
|     return False
 | |
| 
 | |
| 
 | |
| #: Log messages to :func:`~flask.logging.wsgi_errors_stream` with the format
 | |
| #: ``[%(asctime)s] %(levelname)s in %(module)s: %(message)s``.
 | |
| default_handler = logging.StreamHandler(wsgi_errors_stream)
 | |
| default_handler.setFormatter(logging.Formatter(
 | |
|     '[%(asctime)s] %(levelname)s in %(module)s: %(message)s'
 | |
| ))
 | |
| 
 | |
| 
 | |
| def create_logger(app):
 | |
|     """Get the ``'flask.app'`` logger and configure it if needed.
 | |
| 
 | |
|     When :attr:`~flask.Flask.debug` is enabled, set the logger level to
 | |
|     :data:`logging.DEBUG` if it is not set.
 | |
| 
 | |
|     If there is no handler for the logger's effective level, add a
 | |
|     :class:`~logging.StreamHandler` for
 | |
|     :func:`~flask.logging.wsgi_errors_stream` with a basic format.
 | |
|     """
 | |
|     logger = logging.getLogger('flask.app')
 | |
| 
 | |
|     if app.debug and logger.level == logging.NOTSET:
 | |
|         logger.setLevel(logging.DEBUG)
 | |
| 
 | |
|     if not has_level_handler(logger):
 | |
|         logger.addHandler(default_handler)
 | |
| 
 | |
|     return logger
 | |
| 
 |