import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s %(message)s', datefmt='%H:%M:%S')
logging.info('hello')
logging.warning('\n new hello')
11:15:01 INFO hello
11:16:49 WARNING
new hello
由于日志很拥挤,我想在
之前
asctime
和
levelname
显式插入换行符。这是否可以在不修改
format
的情况下实现?
我查看了
logging
模块并用谷歌搜索了一下,但找不到可行的方法。
无法在不修改
format
的情况下在
logging.basicConfig
中添加换行符。
format
参数决定了日志消息的结构。如果想在
asctime
和
levelname
之前添加换行符,则需要更新
format
字符串以包含这些换行符。
以下是如何操作的方法:
import logging
logging.basicConfig(level=logging.DEBUG, format='\n%(asctime)s \n%(levelname)s %(message)s', datefmt='%H:%M:%S')
logging.info('hello')
logging.warning('new hello')
这将产生以下输出:
11:15:01
INFO hello
11:16:49
WARNING new hello
如果不想修改根记录器的格式,始终可以为特定记录器创建
Formatter
并将其添加到
Handler
中。
import logging
# 创建一个格式化程序,在时间戳和级别名称之前添加换行符。
formatter = logging.Formatter('\n%(asctime)s\n%(levelname)s %(message)s', datefmt='%H:%M:%S')
# 创建一个处理程序并将格式化程序添加到其中。
handler = logging.StreamHandler()
handler.setFormatter(formatter)
# 创建一个记录器并将处理程序添加到其中。
logger = logging.getLogger(__name__)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
# 使用记录器记录消息。
logger.info('hello')
logger.warning('new hello')
此代码将产生与以前相同的输出,但它允许自定义特定记录器的格式,而无需更改全局根记录器格式。
标签:python,logging,newline,python-logging From: 20111758