log.error 和 logger.error
时间: 2023-11-08 11:29:32 浏览: 104
`log.error` 和 `logger.error` 都是在 Python 中用于记录日志的方法。它们的区别在于,`log.error` 是直接使用 `logging` 模块的根日志记录器来记录日志,而 `logger.error` 是使用创建的 `logger` 对象记录日志。通常建议使用后者,因为它可以更好地控制日志记录器的行为,包括日志的级别、输出位置和格式等。同时,使用 `logger` 对象还能够方便地实现日志的分级和过滤。
相关问题
logger.error和logger.log的区别
logger.error和logger.log都是logging模块中的方法,用于输出日志信息,但它们的主要区别在于:
1. 参数不同:logger.error只接受一个参数,即错误信息;而logger.log可以接受多个参数,包括日志级别、日志信息、日志参数等。
2. 默认日志级别不同:logger.error的默认日志级别为ERROR,而logger.log的默认日志级别为NOTSET。
因此,如果只需要输出错误信息,可以使用logger.error;如果需要输出其他级别的日志信息,可以使用logger.log,并指定相应的日志级别。
func (sc *psrtpConn) run() { defer sc.s.wg.Done() readErr := make(chan error) go sc.runReader(readErr) select { case err := <-readErr: sc.log(logger.Error, "readErr:%v", err) sc.s.connClose <- sc sc.close() return case <-sc.ctx.Done(): sc.log(logger.Error, "ctx canceled") sc.close() return } }中runReader会在什么时候调用
在这段代码中,`runReader` 是在 `run` 函数中作为 goroutine 调用的。具体来说,`go sc.runReader(readErr)` 会启动一个 goroutine 来执行 `runReader` 函数,并将一个用于通知错误的 channel `readErr` 传递给 `runReader` 函数。在 `runReader` 函数内部,如果发生了错误,会通过 `readErr` channel 发送错误信息。而在 `run` 函数中,通过 `select` 语句来监听 `readErr` channel 和 `sc.ctx.Done()` channel,一旦有一个 channel 有了结果,就会执行相应的代码,要么关闭连接,要么返回。因此,`runReader` 函数会在 `run` 函数的开头被调用。
阅读全文