1.日志级别:_nameToLevel = {
'CRITICAL': CRITICAL,
'FATAL': FATAL,
'ERROR': ERROR,
'WARN': WARNING,
'WARNING': WARNING,
'INFO': INFO,
'DEBUG': DEBUG,
'NOTSET': NOTSET,
}
2.流输出:
- 文件输出,
- 其他流(终端,控制台,网络等待,默认是标准输出(sys.stdout),即输出到终端,,例如print函数,sys.stderr 是一个文件对象,表示标准错误流。
- 网络流,HTTP流,handlers类,SMTP 流(电子邮件)。内存流(io.StringIO 或 io.BytesIO),自定义流
3.addHandler 方法用于向日志记录器添加一个或多个日志处理器。这使得日志记录器可以将日志消息分发到多个目的地(例如同时打印到控制台和保存到文件)。
常见的日志处理器类型
- StreamHandler:将日志输出到控制台(或任何流对象,默认为 sys.stderr)。
- FileHandler:将日志输出到指定的文件。
- RotatingFileHandler:将日志输出到文件,并根据文件大小或时间进行轮转。
- TimedRotatingFileHandler:按时间进行轮转输出日志。
- SocketHandler:将日志发送到网络上的服务器。
- SMTPHandler:将日志通过电子邮件发送
4.示例代码:
import logging
"""日志类"""
class Logger():
#定义了两个输出流,file_handler文件输出,console_handler,终端输出,格式化器为format_handler,需要添加日志处理器到日志记录器logger中,设定日志记录等级为logging.DEBUG
self.logger=logging.getLogger()
self.file_handler=logging.FileHandler(filename="20241202.log")
self.console_handler=logging.StreamHandler()
# self.console_handler=logging.handlers.SocketHandler('localhost', 9999)
format_handler=logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')
self.file_handler.setFormatter(format_handler)
self.console_handler.setFormatter(format_handler)
self.logger.addHandler(self.file_handler)
self.logger.addHandler(self.console_handler)
self.logger.setLevel(logging.DEBUG)
def info(self,msg):
self.logger.info(msg)
def error(self,msg):
self.logger.error(msg)
def debug(self,msg):
self.logger.debug(msg)
def warn(self,msg):
self.logger.warning(msg)