Python 仅记录到控制台而不记录到文件

fre*_*888 2 python logging

我在无限循环中运行我的 python 3.7 程序,当日志文件变得非常大时,日志记录会消耗大量的 cpu 功率。因此,我希望我的日志只是打印到控制台而不是写入文件。我知道我可以使用打印来实现这一点,但我更喜欢记录。

这是我目前使用的:

logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(name)-12s %(levelname)-8s % 
(message)s',
                    datefmt='%m-%d %H:%M%S',
                    filename='mylogfile.log',
                    filemode='w')

console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s % 
(message)s')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
logger = logging.getLogger('')
Run Code Online (Sandbox Code Playgroud)

然后我像这样使用该模块:

logger.error('error in X')  
Run Code Online (Sandbox Code Playgroud)

有什么可以用来阻止日志记录模块写入文件吗?

Sos*_*sel 6

我不是专家,但我的解决方案适合我(仅写入控制台):

logger = logging.getLogger("MyApp")
logger.setLevel(logging.DEBUG)

# remove all default handlers
for handler in logger.handlers:
    logger.removeHandler(handler)

# create console handler and set level to debug
console_handle = logging.StreamHandler()
console_handle.setLevel(logging.DEBUG)

# create formatter
formatter = logging.Formatter("%(name)-20s - %(levelname)-8s - %(message)s")
console_handle.setFormatter(formatter)

# now add new handler to logger
logger.addHandler(console_handle)
Run Code Online (Sandbox Code Playgroud)