1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3
4#
5# Copyright (c) 2024 Huawei Device Co., Ltd.
6# Licensed under the Apache License, Version 2.0 (the "License");
7# you may not use this file except in compliance with the License.
8# You may obtain a copy of the License at
9#
10#     http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS,
14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15# See the License for the specific language governing permissions and
16# limitations under the License.
17#
18
19import logging
20from logging import handlers
21
22
23class LogWrapper:
24    logger = None
25
26    def __init__(self):
27        self.logger = logging.getLogger('log.txt')
28        self.logger.setLevel(logging.DEBUG)
29        # max 1M
30        file_handler = handlers.RotatingFileHandler(filename='log.txt', maxBytes=1 * 1024 * 1024, backupCount=3,
31                                                    encoding='utf-8')
32        format_str = logging.Formatter('%(asctime)s - %(levelname)s: %(message)s')
33        file_handler.setFormatter(format_str)
34        self.logger.addHandler(file_handler)
35        console_handler = logging.StreamHandler()
36        console_handler.setFormatter(format_str)
37        self.logger.addHandler(console_handler)
38
39
40logWrapper = LogWrapper()
41log_debug_enabled = False
42
43
44def enable_debug(flag):
45    global log_debug_enabled
46    log_debug_enabled = flag
47
48
49def log_debug(msg):
50    if log_debug_enabled:
51        logWrapper.logger.debug(msg)
52
53
54def log_info(msg):
55    if log_debug_enabled:
56        logWrapper.logger.info(msg)
57
58
59def log_warning(msg):
60    logWrapper.logger.warning(msg)
61
62
63def log_error(msg):
64    logWrapper.logger.error(msg)
65
66
67def log_critical(msg):
68    logWrapper.logger.critical(msg)
69
70
71def log_message(msg):
72    logWrapper.logger.info(msg)