05360171创建于 2022年3月18日历史提交
#!/bin/bash

# Copyright 2021 Huawei Technologies Co., Ltd

#

# Licensed under the BSD 3-Clause License  (the "License");

# you may not use this file except in compliance with the License.

# You may obtain a copy of the License at

#

# https://opensource.org/licenses/BSD-3-Clause

#

# Unless required by applicable law or agreed to in writing, software

# distributed under the License is distributed on an "AS IS" BASIS,

# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

# See the License for the specific language governing permissions and

# limitations under the License.



from __future__ import absolute_import

import os

import sys



from .osutils import mkdir_if_missing





class Logger(object):

    def __init__(self, fpath=None):

        self.console = sys.stdout

        self.file = None

        if fpath is not None:

            mkdir_if_missing(os.path.dirname(fpath))

            self.file = open(fpath, 'w')



    def __del__(self):

        self.close()



    def __enter__(self):

        pass



    def __exit__(self, *args):

        self.close()



    def write(self, msg):

        self.console.write(msg)

        if self.file is not None:

            self.file.write(msg)



    def flush(self):

        self.console.flush()

        if self.file is not None:

            self.file.flush()

            os.fsync(self.file.fileno())



    def close(self):

        self.console.close()

        if self.file is not None:

            self.file.close()