mirror of
				https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
				synced 2025-11-04 04:12:45 +00:00 
			
		
		
		
	Simplify logging configuration
This commit is contained in:
		@@ -21,7 +21,6 @@ def deploy():
 | 
			
		||||
    print('Make default directories')
 | 
			
		||||
    base_dir = current_app.config['NOPAQUE_DATA_DIR']
 | 
			
		||||
    default_dirs: List[Path] = [
 | 
			
		||||
        Path('/var/log/nopaque'),
 | 
			
		||||
        base_dir / 'tmp',
 | 
			
		||||
        base_dir / 'users'
 | 
			
		||||
    ]
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										65
									
								
								config.py
									
									
									
									
									
								
							
							
						
						
									
										65
									
								
								config.py
									
									
									
									
									
								
							@@ -20,6 +20,7 @@ class Config:
 | 
			
		||||
    APIFAIRY_UI_PATH = '/api'
 | 
			
		||||
 | 
			
		||||
    ''' # Flask # '''
 | 
			
		||||
    APPLICATION_ROOT = os.environ.get('APPLICATION_ROOT', '/')
 | 
			
		||||
    PREFERRED_URL_SCHEME = os.environ.get('PREFERRED_URL_SCHEME', 'http')
 | 
			
		||||
    SECRET_KEY = os.environ.get('SECRET_KEY', 'hard to guess string')
 | 
			
		||||
    SERVER_NAME = os.environ.get('SERVER_NAME', 'localhost:5000')
 | 
			
		||||
@@ -34,7 +35,7 @@ class Config:
 | 
			
		||||
 | 
			
		||||
    ''' # Flask-Hashids '''
 | 
			
		||||
    HASHIDS_MIN_LENGTH = int(os.environ.get('HASHIDS_MIN_LENGTH', '16'))
 | 
			
		||||
    HASHIDS_SALT=os.environ.get('HASHIDS_SALT', 'hard to guess string')
 | 
			
		||||
    HASHIDS_SALT = os.environ.get('HASHIDS_SALT', 'hard to guess string')
 | 
			
		||||
 | 
			
		||||
    ''' # Flask-Login # '''
 | 
			
		||||
    REMEMBER_COOKIE_SECURE = \
 | 
			
		||||
@@ -85,17 +86,15 @@ class Config:
 | 
			
		||||
        '[%(asctime)s] %(levelname)s in '
 | 
			
		||||
        '%(pathname)s (function: %(funcName)s, line: %(lineno)d): %(message)s'
 | 
			
		||||
    )
 | 
			
		||||
    NOPAQUE_LOG_LEVEL = os.environ.get('NOPAQUE_LOG_LEVEL', 'INFO')
 | 
			
		||||
    NOPAQUE_LOG_FILE_ENABLED = \
 | 
			
		||||
        os.environ.get('NOPAQUE_LOG_FILE_ENABLED', 'true').lower() == 'true'
 | 
			
		||||
    NOPAQUE_LOG_FILE_DIR = \
 | 
			
		||||
        os.environ.get('NOPAQUE_LOGS_PATH', os.path.join(basedir, 'logs'))
 | 
			
		||||
        os.environ.get('NOPAQUE_LOG_FILE_ENABLED', 'false').lower() == 'true'
 | 
			
		||||
    NOPAQUE_LOG_FILE_DIR = Path(os.environ.get('NOPAQUE_LOG_FILE_DIR', '/var/log/nopaque'))
 | 
			
		||||
    NOPAQUE_LOG_FILE_LEVEL = \
 | 
			
		||||
        os.environ.get('NOPAQUE_LOG_FILE_LEVEL', NOPAQUE_LOG_LEVEL)
 | 
			
		||||
        os.environ.get('NOPAQUE_LOG_FILE_LEVEL', None)
 | 
			
		||||
    NOPAQUE_LOG_STDERR_ENABLED = \
 | 
			
		||||
        os.environ.get('NOPAQUE_LOG_STDERR_ENABLED', 'false').lower() == 'true'
 | 
			
		||||
        os.environ.get('NOPAQUE_LOG_STDERR_ENABLED', 'true').lower() == 'true'
 | 
			
		||||
    NOPAQUE_LOG_STDERR_LEVEL = \
 | 
			
		||||
        os.environ.get('NOPAQUE_LOG_STDERR_LEVEL', NOPAQUE_LOG_LEVEL)
 | 
			
		||||
        os.environ.get('NOPAQUE_LOG_STDERR_LEVEL', None)
 | 
			
		||||
 | 
			
		||||
    NOPAQUE_PROXY_FIX_ENABLED = \
 | 
			
		||||
        os.environ.get('NOPAQUE_PROXY_FIX_ENABLED', 'false').lower() == 'true'
 | 
			
		||||
@@ -119,42 +118,35 @@ class Config:
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def init_app(app: Flask):
 | 
			
		||||
        # Set up logging according to the corresponding (NOPAQUE_LOG_*)
 | 
			
		||||
        # configurations
 | 
			
		||||
        app.logger.setLevel(app.config['NOPAQUE_LOG_LEVEL'])
 | 
			
		||||
        # Remove existing handlers
 | 
			
		||||
        for handler in app.logger.handlers:
 | 
			
		||||
            app.logger.removeHandler(handler)
 | 
			
		||||
        # Setup handlers
 | 
			
		||||
        formatter = logging.Formatter(
 | 
			
		||||
 | 
			
		||||
        log_formatter = logging.Formatter(
 | 
			
		||||
            fmt=app.config['NOPAQUE_LOG_FORMAT'],
 | 
			
		||||
            datefmt=app.config['NOPAQUE_LOG_DATE_FORMAT']
 | 
			
		||||
        )
 | 
			
		||||
        if app.config['NOPAQUE_IS_PRIMARY_INSTANCE']:
 | 
			
		||||
           app.config['JOBS'].append(
 | 
			
		||||
                {
 | 
			
		||||
                    "id": "daemon",
 | 
			
		||||
                    "func": "app.daemon:daemon",
 | 
			
		||||
                    "args": (app,),
 | 
			
		||||
                    "trigger": "interval",
 | 
			
		||||
                    "seconds": 3,
 | 
			
		||||
                }
 | 
			
		||||
           )
 | 
			
		||||
 | 
			
		||||
        if app.config['NOPAQUE_LOG_STDERR_ENABLED']:
 | 
			
		||||
            log_stderr_level: str | None = app.config['NOPAQUE_LOG_STDERR_LEVEL']
 | 
			
		||||
            stream_handler = logging.StreamHandler()
 | 
			
		||||
            stream_handler.setFormatter(formatter)
 | 
			
		||||
            stream_handler.setLevel(app.config['NOPAQUE_LOG_STDERR_LEVEL'])
 | 
			
		||||
            stream_handler.setFormatter(log_formatter)
 | 
			
		||||
            if log_stderr_level is not None:
 | 
			
		||||
                stream_handler.setLevel(log_stderr_level)
 | 
			
		||||
            app.logger.addHandler(stream_handler)
 | 
			
		||||
 | 
			
		||||
        if app.config['NOPAQUE_LOG_FILE_ENABLED']:
 | 
			
		||||
            if not os.path.exists(app.config['NOPAQUE_LOG_FILE_DIR']):
 | 
			
		||||
                os.mkdir(app.config['NOPAQUE_LOG_FILE_DIR'])
 | 
			
		||||
            log_file_dir: Path = app.config['NOPAQUE_LOG_FILE_DIR']
 | 
			
		||||
            log_file_level: str | None = app.config['NOPAQUE_LOG_FILE_LEVEL']
 | 
			
		||||
            if not log_file_dir.exists():
 | 
			
		||||
                log_file_dir.mkdir()
 | 
			
		||||
            rotating_file_handler = RotatingFileHandler(
 | 
			
		||||
                os.path.join(app.config['NOPAQUE_LOG_FILE_DIR'], 'nopaque.log'),  # noqa
 | 
			
		||||
                log_file_dir / 'nopaque.log',
 | 
			
		||||
                maxBytes=10_240,
 | 
			
		||||
                backupCount=10
 | 
			
		||||
            )
 | 
			
		||||
            rotating_file_handler.setFormatter(formatter)
 | 
			
		||||
            rotating_file_handler.setLevel(app.config['NOPAQUE_LOG_FILE_LEVEL'])  # noqa
 | 
			
		||||
            rotating_file_handler.setFormatter(log_formatter)
 | 
			
		||||
            if log_file_level is not None:
 | 
			
		||||
                rotating_file_handler.setLevel(log_file_level)
 | 
			
		||||
            app.logger.addHandler(rotating_file_handler)
 | 
			
		||||
 | 
			
		||||
        if app.config['NOPAQUE_PROXY_FIX_ENABLED']:
 | 
			
		||||
@@ -168,3 +160,14 @@ class Config:
 | 
			
		||||
                x_prefix=app.config['NOPAQUE_PROXY_FIX_X_PREFIX'],
 | 
			
		||||
                x_proto=app.config['NOPAQUE_PROXY_FIX_X_PROTO']
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
        if app.config['NOPAQUE_IS_PRIMARY_INSTANCE']:
 | 
			
		||||
           app.config['JOBS'].append(
 | 
			
		||||
                {
 | 
			
		||||
                    "id": "daemon",
 | 
			
		||||
                    "func": "app.daemon:daemon",
 | 
			
		||||
                    "args": (app,),
 | 
			
		||||
                    "trigger": "interval",
 | 
			
		||||
                    "seconds": 3,
 | 
			
		||||
                }
 | 
			
		||||
           )
 | 
			
		||||
 
 | 
			
		||||
@@ -50,7 +50,6 @@ services:
 | 
			
		||||
    restart: "unless-stopped"
 | 
			
		||||
    volumes:
 | 
			
		||||
      - "/var/run/docker.sock:/var/run/docker.sock"
 | 
			
		||||
      - "./volumes/nopaque/logs:/var/log/nopaque"
 | 
			
		||||
      # DANGER: Don't change the following mount within a Docker Compose
 | 
			
		||||
      #         config file, use the `.env` file instead.
 | 
			
		||||
      - "${HOST_NOPAQUE_DATA_PATH}:${HOST_NOPAQUE_DATA_PATH}"
 | 
			
		||||
 
 | 
			
		||||
@@ -113,10 +113,10 @@ NOPAQUE_ADMIN=
 | 
			
		||||
# DEFAULT: /mnt/nopaque
 | 
			
		||||
# NOTES:
 | 
			
		||||
# - This must be a network share and it must be available on all
 | 
			
		||||
#   Docker Swarm nodes, mounted to the same path with the same
 | 
			
		||||
#   user and group ownership
 | 
			
		||||
#   Docker Swarm nodes, mounted to the same path.
 | 
			
		||||
# - When running with Docker Compose, this gets overwritten in the
 | 
			
		||||
#   `docker-compose.yml` file
 | 
			
		||||
#   `docker-compose.yml` file with the value of the `HOST_NOPAQUE_DATA_PATH`
 | 
			
		||||
#   environment variable from the `.env` file.
 | 
			
		||||
# NOPAQUE_DATA_PATH=
 | 
			
		||||
 | 
			
		||||
# CHOOSE ONE: False, True
 | 
			
		||||
@@ -141,30 +141,22 @@ NOPAQUE_DOCKER_REGISTRY_PASSWORD=
 | 
			
		||||
# DEFAULT: [%(asctime)s] %(levelname)s in %(pathname)s (function: %(funcName)s, line: %(lineno)d): %(message)s
 | 
			
		||||
# NOPAQUE_LOG_FORMAT=
 | 
			
		||||
 | 
			
		||||
# DEFAULT: INFO
 | 
			
		||||
# CHOOSE ONE: CRITICAL, ERROR, WARNING, INFO, DEBUG
 | 
			
		||||
# NOPAQUE_LOG_LEVEL=
 | 
			
		||||
 | 
			
		||||
# CHOOSE ONE: False, True
 | 
			
		||||
# DEFAULT: True
 | 
			
		||||
# DEFAULT: False
 | 
			
		||||
# NOPAQUE_LOG_FILE_ENABLED=
 | 
			
		||||
 | 
			
		||||
# DEFAULT: <nopaque-basedir>/logs
 | 
			
		||||
# NOTES:
 | 
			
		||||
# - Use `.` as <nopaque-basedir>
 | 
			
		||||
# - When running with Docker Compose, this gets overwritten in the
 | 
			
		||||
#   `docker-compose.yml` file
 | 
			
		||||
# NOPAQUE_LOGS_PATH=
 | 
			
		||||
# DEFAULT: /var/log/nopaque
 | 
			
		||||
# NOPAQUE_LOG_FILE_DIR=
 | 
			
		||||
 | 
			
		||||
# DEFAULT: NOPAQUE_LOG_LEVEL
 | 
			
		||||
# DEFAULT: DEBUG if FLASK_DEBUG == True else WARNING
 | 
			
		||||
# CHOOSE ONE: CRITICAL, ERROR, WARNING, INFO, DEBUG
 | 
			
		||||
# NOPAQUE_LOG_FILE_LEVEL=
 | 
			
		||||
 | 
			
		||||
# CHOOSE ONE: False, True
 | 
			
		||||
# DEFAULT: False
 | 
			
		||||
# DEFAULT: True
 | 
			
		||||
# NOPAQUE_LOG_STDERR_ENABLED=
 | 
			
		||||
 | 
			
		||||
# DEFAULT: NOPAQUE_LOG_LEVEL
 | 
			
		||||
# DEFAULT: DEBUG if FLASK_DEBUG == True else WARNING
 | 
			
		||||
# CHOOSE ONE: CRITICAL, ERROR, WARNING, INFO, DEBUG
 | 
			
		||||
# NOPAQUE_LOG_STDERR_LEVEL=
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user