1
1
import logging
2
- from logging .handlers import SMTPHandler , RotatingFileHandler
2
+ # from logging.handlers import SMTPHandler, RotatingFileHandler
3
3
import os
4
4
from flask import Flask
5
5
from config import Config_Development # , Config_Production, Config
6
- # from flask_moment import Moment # https://momentjs.com/
7
6
8
- from app .api import webhook
9
- from app .api import configuration
7
+ from app .utils import webhook
8
+ from app .utils import configuration
9
+ from app .utils import app_log_config
10
10
11
11
#=================================================
12
12
# Initialise components
13
- #
14
- # moment = Moment()
15
-
16
- #==================================================================================================
17
- # Add_Level function
18
- #==================================================================================================
19
- def Add_Logging_Levels ():
20
- DEBUGV_LEVEL_NUM = 9
21
- DEBUGVV_LEVEL_NUM = 8
22
-
23
- logging .addLevelName (DEBUGV_LEVEL_NUM , "DEBUGV" )
24
- logging .addLevelName (DEBUGVV_LEVEL_NUM , "DEBUGVV" )
25
-
26
- def debugv (self , message , * args , ** kws ):
27
- if self .isEnabledFor (DEBUGV_LEVEL_NUM ):
28
- self ._log (DEBUGV_LEVEL_NUM , message , args , ** kws )
29
-
30
- def debugvv (self , message , * args , ** kws ):
31
- if self .isEnabledFor (DEBUGVV_LEVEL_NUM ):
32
- self ._log (DEBUGVV_LEVEL_NUM , message , args , ** kws )
33
-
34
- logging .Logger .debugv = debugv
35
- logging .Logger .debugvv = debugvv
36
- return
37
13
38
14
#==================================================================================================
39
15
# Main app creation function
@@ -43,7 +19,7 @@ def create_app(config_class=Config_Development):
43
19
app .config .from_object (config_class )
44
20
45
21
#====================================================================================
46
- # Define the app Blueprints
22
+ # Register the app Blueprints
47
23
#====================================================================================
48
24
from app .main import bp as main_bp
49
25
app .register_blueprint (main_bp )
@@ -55,47 +31,27 @@ def create_app(config_class=Config_Development):
55
31
app .register_blueprint (events_bp , url_prefix = '/events' )
56
32
57
33
#====================================================================================
58
- # Set up email for the application log
34
+ # Set up the application logging
59
35
#====================================================================================
60
- # if not app.debug and not app.testing:
61
- # if app.config['MAIL_SERVER']:
62
- # auth = None
63
- # if app.config['MAIL_USERNAME'] or app.config['MAIL_PASSWORD']:
64
- # auth = (app.config['MAIL_USERNAME'],
65
- # app.config['MAIL_PASSWORD'])
66
- # secure = None
67
- # if app.config['MAIL_USE_TLS']:
68
- # secure = ()
69
- # mail_handler = SMTPHandler(
70
- # mailhost=(app.config['MAIL_SERVER'], app.config['MAIL_PORT']),
71
- # fromaddr='no-reply@' + app.config['MAIL_SERVER'],
72
- # toaddrs=app.config['MAIL_DEFAULT_SENDER'], subject=app.config['MAIL_DEFAULT_SUBJECT'] + " " + 'App Failure',
73
- # credentials=auth, secure=secure)
74
- # mail_handler.setLevel(logging.ERROR)
75
- # app.logger.addHandler(mail_handler)
36
+ app_log_config .Add_Logging_Levels ()
76
37
77
- #====================================================================================
78
- # Set up the application log file
79
- #====================================================================================
80
- Logfile_Directory = os .path .join (app .root_path , app .config ['LOGFILE_RELATIVE_PATH' ])
38
+ Logfile_Directory = os .path .join (app .config ['CONFIG_PATH' ], app .config ['LOGFILE_SUBPATH' ])
81
39
if not os .path .exists (Logfile_Directory ):
82
40
os .mkdir (Logfile_Directory )
83
- Logfile_Fullname = os .path .join (Logfile_Directory , 'nutcase.log' )
84
41
85
- Logfile_Handler = RotatingFileHandler (Logfile_Fullname , maxBytes = 250000 , backupCount = 10 )
86
- Log_Format = '%(asctime)s %(levelname)-8s %(module)s: %(message)s'
87
- Logfile_Handler .setFormatter (logging .Formatter (Log_Format ))
88
- Logfile_Handler .name = "logfile_handler"
89
- app .logger .addHandler (Logfile_Handler )
90
-
91
- Add_Logging_Levels ()
42
+ app_log_config .Add_RF_Handler ( app )
92
43
93
44
#====================================================================================
94
45
# Set the logging level from the environment variable LOG_LEVEL if present.
95
46
#====================================================================================
96
- try : app .logger .setLevel ( os .environ .get ('LOG_LEVEL' , "DEBUG" ).upper () )
97
- except Exception : app .logger .setLevel ( logging .DEBUG )
98
-
47
+ Console_Level = os .environ .get ('LOG_LEVEL' , app .config ['DEFAULT_CONSOLE_LEVEL' ]).upper ()
48
+ Logfile_Level = os .environ .get ('LOG_LEVEL' , app .config ['DEFAULT_LOGFILE_LEVEL' ]).upper ()
49
+
50
+ app .logger .info ("Init: Console_Level {} Logfile_Level {}" .format ( Console_Level , Logfile_Level ))
51
+ app_log_config .Set_Log_Level ( app , Console_Level , "con" )
52
+ app_log_config .Set_Log_Level ( app , Logfile_Level , "rfh" )
53
+ app .logger .setLevel ( 1 ) # Set the root logger to pass everything on
54
+
99
55
#====================================================================================
100
56
# Load the app configuration from a YAML file
101
57
#====================================================================================
@@ -104,10 +60,12 @@ def create_app(config_class=Config_Development):
104
60
#====================================================================================
105
61
# Log starting and call a web hook
106
62
#====================================================================================
107
- app .logger .info ("{} starting. Version {}, Logging level {}" .format (
108
- app .config ['APP_NAME' ], app .config ['APP_VERSION' ],
109
- logging .getLevelName (app .logger .level )).lower () )
110
-
63
+ app .logger .info ("{} starting. Version {}, Logging: console {} logfile {}" .format (
64
+ app .config ['APP_NAME' ], app .config ['APP_VERSION' ],
65
+ logging .getLevelName ( app_log_config .Get_Handler ( app , 'con' ).level ),
66
+ logging .getLevelName ( app_log_config .Get_Handler ( app , 'rfh' ).level ),
67
+ ))
68
+
111
69
webhook .Call_Webhook ( app , "ok" , { "status" : "up" , "msg" : "NUTCase starting" } )
112
70
113
71
return app
0 commit comments