这是我的场景:我想记录我的_模块的活动。这需要对两个不同的文件执行,具体取决于执行的方法(例如,输入和输出)。
所以我有两个处理程序,每一个都指向一个不同的文件(my_uin_u.log&my_uout_u.log),具有相同的日志级别。我想知道我是否可以使用同一个记录器来实现这一点,或者我必须定义两个记录器。我的配置是:
[loggers]
keys=root, my_log
[handlers]
keys=my_in_hand, my_out_hand
[formatters]
keys=generic_form
...
[logger_my_log]
level=NOTSET
handlers=my_in_hand, my_out_hand
qualname=ws_log
[handler_my_in_hand]
class=handlers.TimeRotatingFileHandler
level=NOTSET
formatter=generic_form
args=('my_in_.log', 'h', 1, 0, None, False, True)
[handler_my_out_hand]
class=handlers.TimeRotatingFileHandler
level=NOTSET
formatter=generic_form
args=('my_out_.log', 'h', 1, 0, None, False, True)
我是否必须为每个处理程序/目标定义一个记录器(因为我想在不同的文件中记录不同的信息)?是否有方法向记录器指示哪个处理程序将执行此操作?我是说,我有两个处理程序用于一个记录器,然后只选择一个处理程序来记录一个方法。
最后我决定定义两个伐木工人,因为:
它们有不同的用途。在我的例子中,一个记录对web服务的输入请求,另一个记录响应。他们使用不同的文件
我正在使用一个日志配置文件,在一个前端web服务中。正如@mike所说,在记录消息之前添加/删除处理程序不是正确的方法。我也要打给德雷金!
这是我的日志配置文件,仅供有兴趣的人参考:
再见!
你想要的是
将处理程序添加到适当的记录器
那么
请注意,如果您创建一个根日志记录器和一个不同的日志记录器,根日志记录器将记录此不同控制器试图记录的所有内容。
换句话说,如果
那么
您应该为要将日志发送到的每个目标实例化一个处理程序,然后将2个处理程序添加到日志记录器中。 以下方法应该有效(但没有进行测试):
当然,添加您可能需要的所有配置和格式选项。基本上,这只是为了向您展示,当您实例化日志处理程序时,您可以将其添加到日志记录器中。从那时起,您的日志记录将被发送到添加到记录器的每个处理程序。
相关问题 更多 >
编程相关推荐