\

Pythonのロギングモジュールでは、改行を制御するためのいくつかの方法があります。

空行を挿入する

最も簡単な方法は、空の文字列に改行をログとして出力することです。以下にその例を示します。

import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s %(message)s', datefmt='%H:%M:%S')
logging.info('hello')
logging.info('\\n')
logging.warning('new hello')

このコードは、INFOレベルのログとして空の文字列を出力します。その結果、ログの間に空行が挿入されます。

ハンドラを切り替える

もう一つの方法は、異なるハンドラを切り替えることです。以下にその例を示します。

import logging
import types

def log_newline(self, how_many_lines=1):
    # Switch handler, output a blank line
    self.removeHandler(self.console_handler)
    self.addHandler(self.blank_handler)
    for i in range(how_many_lines):
        self.info('')
    # Switch back
    self.removeHandler(self.blank_handler)
    self.addHandler(self.console_handler)

def create_logger():
    # Create a handler
    console_handler = logging.StreamHandler()
    console_handler.setLevel(logging.DEBUG)
    console_handler.setFormatter(logging.Formatter(fmt="%(name)s %(levelname)-8s: %(message)s"))
    # Create a "blank line" handler
    blank_handler = logging.StreamHandler()
    blank_handler.setLevel(logging.DEBUG)
    blank_handler.setFormatter(logging.Formatter(fmt=''))
    # Create a logger, with the previously-defined handler
    logger = logging.getLogger('logging_test')
    logger.setLevel(logging.DEBUG)
    logger.addHandler(console_handler)
    # Save some data and add a method to logger object
    logger.console_handler = console_handler
    logger.blank_handler = blank_handler
    logger.newline = types.MethodType(log_newline, logger)
    return logger

if __name__ == '__main__':
    logger = create_logger()
    logger.info('Start reading database')
    logger.info('Updating records ...')
    logger.newline()
    logger.info('Finish updating records')

このコードでは、log_newline関数を使用して、ログの間に空行を挿入します。この関数は、通常のハンドラと空行用のハンドラを切り替えることで、ログの間に空行を挿入します。

これらの方法を使用することで、Pythonのロギングモジュールで改行を制御することが可能です。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です