| 
									
										
										
										
											2022-08-26 07:29:38 +02:00
										 |  |  | import logging | 
					
						
							|  |  |  | from enum import Enum | 
					
						
							|  |  |  | from logging.handlers import RotatingFileHandler | 
					
						
							| 
									
										
										
										
											2023-11-13 08:58:38 +01:00
										 |  |  | from typing import Union | 
					
						
							| 
									
										
										
										
											2022-08-26 07:29:38 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | from airflow.configuration import conf | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-13 08:58:38 +01:00
										 |  |  | from metadata.generated.schema.metadataIngestion.application import ( | 
					
						
							|  |  |  |     OpenMetadataApplicationConfig, | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2023-01-23 16:28:17 +01:00
										 |  |  | from metadata.generated.schema.metadataIngestion.workflow import ( | 
					
						
							|  |  |  |     OpenMetadataWorkflowConfig, | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | from metadata.utils.logger import set_loggers_level | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-26 07:29:38 +02:00
										 |  |  | BASE_LOGGING_FORMAT = ( | 
					
						
							|  |  |  |     "[%(asctime)s] %(levelname)-8s {%(name)s:%(module)s:%(lineno)d} - %(message)s" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Loggers(Enum): | 
					
						
							|  |  |  |     API_ROUTES = "AirflowAPIRoutes" | 
					
						
							|  |  |  |     API = "AirflowAPI" | 
					
						
							|  |  |  |     OPERATIONS = "AirflowOperations" | 
					
						
							|  |  |  |     WORKFLOW = "AirflowWorkflow" | 
					
						
							| 
									
										
										
										
											2022-11-09 13:00:22 +05:30
										 |  |  |     UTILS = "AirflowUtils" | 
					
						
							| 
									
										
										
										
											2022-08-26 07:29:38 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def build_logger(logger_name: str) -> logging.Logger: | 
					
						
							|  |  |  |     logger = logging.getLogger(logger_name) | 
					
						
							|  |  |  |     log_format = logging.Formatter(BASE_LOGGING_FORMAT) | 
					
						
							|  |  |  |     rotating_log_handler = RotatingFileHandler( | 
					
						
							|  |  |  |         f"{conf.get('logging', 'base_log_folder', fallback='')}/openmetadata_airflow_api.log", | 
					
						
							|  |  |  |         maxBytes=1000000, | 
					
						
							|  |  |  |         backupCount=10, | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     rotating_log_handler.setFormatter(log_format) | 
					
						
							|  |  |  |     logger.addHandler(rotating_log_handler) | 
					
						
							| 
									
										
										
										
											2023-01-23 16:28:17 +01:00
										 |  |  |     # We keep the log level as DEBUG to have all the traces in case anything fails | 
					
						
							|  |  |  |     # during a deployment of a DAG | 
					
						
							| 
									
										
										
										
											2022-08-26 07:29:38 +02:00
										 |  |  |     logger.setLevel(logging.DEBUG) | 
					
						
							|  |  |  |     return logger | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def routes_logger() -> logging.Logger: | 
					
						
							|  |  |  |     return build_logger(Loggers.API_ROUTES.value) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def api_logger(): | 
					
						
							|  |  |  |     return build_logger(Loggers.API.value) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def operations_logger(): | 
					
						
							|  |  |  |     return build_logger(Loggers.OPERATIONS.value) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def workflow_logger(): | 
					
						
							|  |  |  |     return build_logger(Loggers.WORKFLOW.value) | 
					
						
							| 
									
										
										
										
											2022-11-09 13:00:22 +05:30
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def utils_logger(): | 
					
						
							|  |  |  |     return build_logger(Loggers.UTILS.value) | 
					
						
							| 
									
										
										
										
											2023-01-23 16:28:17 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-13 08:58:38 +01:00
										 |  |  | def set_operator_logger( | 
					
						
							|  |  |  |     workflow_config: Union[OpenMetadataWorkflowConfig, OpenMetadataApplicationConfig] | 
					
						
							|  |  |  | ) -> None: | 
					
						
							| 
									
										
										
										
											2023-01-23 16:28:17 +01:00
										 |  |  |     """
 | 
					
						
							|  |  |  |     Handle logging for the Python Operator that | 
					
						
							|  |  |  |     will execute the ingestion | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     logging.getLogger().setLevel(logging.WARNING) | 
					
						
							|  |  |  |     set_loggers_level(workflow_config.workflowConfig.loggerLevel.value) |