我已经制作了一个日志文件。现在我想在日志文件中打印标题。这样一来,您就可以确定该列的用途。
我提供了我编写的代码。
TICKET NO DATE TIME NAME USER MESSAGE
INC0010265 - 2019-06-25 20:41:54,286 - log - INFO - Mail Send Succesfully
INC0010265 - 2019-06-25 20:41:56,271 - log - INFO - INC0010265 Ticket Update Succesfully
INC0010265 - 2019-06-25 20:41:56,271 - log - INFO - -----Ticket Closed-----
我要这样打印:
{{1}}
答案 0 :(得分:0)
这不是您要的100%,但是我能想到的最接近。
首先,对于同一程序,您不应多次调用basicConfig
。它实际上什么也没做...
此外,通过定义检查消息类型的函数,您还失去了logging
的功能。调用logger.info
以获得错误消息看起来很可笑。您应该要做的是使用Handler
。查看此代码:
import logging
logger = logging.getLogger(__name__)
log_file = str(datetime.utcnow().strftime('%d_%m_%Y')) + '.log'
error_handler = logging.FileHandler("app.log")
error_handler.setLevel(logging.ERROR)
info_handler = logging.FileHandler(log_file)
info_handler.setLevel(logging.INFO)
logger.setLevel(logging.INFO)
logger.addHandler(info_handler)
logger.addHandler(error_handler)
header_formatter = logging.Fomatter('%(message)s')
default_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
error_handler.setFormatter(header_formatter)
info_handler.setFormatter(header_formatter)
logger.error("DATE\t\tTIME\t\tNAME\t\tUSER\t\tTICKET NO\tMESSAGE")
error_handler.setFormatter(default_formatter)
info_handler.setFormatter(default_formatter )
一些解释:
error_handler
和info_handler
将不同类型的消息定向到不同的文件。 注意,这样,错误消息也将出现在信息文件中。logger
的级别设置为最小(在这种情况下为INFO
),然后将其添加到处理程序中。formatter
。我们首先为两个处理程序分配头格式器。然后,我们打印标题(使用logger.error
,因此它将同时进入两个日志)。然后使用常规格式化程序设置处理程序。第二个注意:由于您尝试达到ticket_no
,我无法找到一种向字段添加字段的方法。如您所见,我将列移到了消息之前,因此只需在消息的开头添加ticke_no
。例如,您可以做的事情:
def log_msg(logger, type_of_message, msg, ticket_no):
msg = "{}\t{}".format(ticket_no, msg)
if(type_of_message == 'INFO' or 'Info'):
logger.info(msg)
elif(type_of_message == 'ERROR' or 'Error'):
logger.error(msg)