def logger_info(logger_name, log_path='default_logger.log'): log = logging.getLogger(logger_name) if log.hasHandlers(): print('LogHandlers exists!') else: print('LogHandlers setup!') level = logging.INFO formatter = logging.Formatter('%(asctime)s.%(msecs)03d : %(message)s', datefmt='%y-%m-%d %H:%M:%S') fh = logging.FileHandler(log_path, mode='a') fh.setFormatter(formatter) log.setLevel(level) log.addHandler(fh) # print(len(log.handlers)) sh = logging.StreamHandler() sh.setFormatter(formatter) log.addHandler(sh)
时间: 2024-04-13 18:24:46 浏览: 173
这段代码是一个用于设置日志记录的函数。它接受一个日志记录器名称和可选的日志文件路径作为参数。如果已经存在与给定名称相同的日志处理程序,函数将输出"LogHandlers exists!",否则将设置新的日志处理程序。
函数首先创建一个日志记录器对象,并检查是否已经存在处理程序。如果存在,则输出"LogHandlers exists!",表示日志已经设置过了。如果不存在处理程序,则创建一个新的处理程序,并设置其级别为INFO。接下来,创建一个文件处理程序(FileHandler)用于将日志记录到文件中,并设置格式化器(Formatter)以指定日志消息的格式。然后,将文件处理程序添加到日志记录器中。
接下来,创建一个流处理程序(StreamHandler)用于将日志消息输出到控制台,并设置相同的格式化器。最后,将流处理程序添加到日志记录器中。
这段代码中的注释部分可能是用于调试目的,它会输出日志处理程序的数量。
相关问题
self.logger = logging.getLogger(__name__)
`self.logger = logging.getLogger(__name__)` 这行代码在Python中用于设置日志记录器。这里是关于logging模块的一个常见用法,特别是在类的初始化(`__init__`)方法中。`logging.getLogger(__name__)` 是从根logger获取一个名为当前模块名的日志处理器。
1. `logging.getLogger(__name__)`:`__name__`是一个特殊变量,它返回的是当前模块的名称,这样可以确保每个模块都有独立的日志记录器,避免全局变量污染。
2. `self.logger`:`self`通常是指类的实例,将这个属性赋值给`logger`,意味着每个类的实例都有自己的日志记录器,可以分别记录其内部操作。
通过这种方式,你可以按照需要配置各个类的log级别、handler(如文件、控制台等)以及其他日志格式信息。例如:
```python
def __init__(self):
self.logger.setLevel(logging.INFO)
handler = logging.FileHandler('app.log')
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
self.logger.addHandler(handler)
# 现在,每次调用self.logger.info("This is an info log"), 日志就会添加到'app.log'里
```
logger = logging.getLogger(__name__)作用与log.info()
`logger = logging.getLogger(__name__)` 是用来创建一个 Logger 对象的语句,它可以用于记录日志消息。Logger 是 Python 标准库中的 logging 模块提供的一个核心类,用于管理和输出日志信息。
`logger` 对象可以用来调用不同级别的日志记录方法,比如 `logger.debug()`、`logger.info()`、`logger.warning()`、`logger.error()` 和 `logger.critical()`。这些方法用于记录不同级别的日志消息,以便在程序执行过程中进行跟踪、调试和错误处理。
`log.info()` 是 `logging` 模块中的一个方法,用于将一条具有 INFO 级别的日志消息记录到默认的 logger 对象中。它的作用是向日志中添加一条信息性的消息,通常用于显示程序运行的进程、状态或其他重要信息。
所以,`logger = logging.getLogger(__name__)` 用于创建一个 Logger 对象,而 `log.info()` 是 Logger 对象中的一个方法,用于记录 INFO 级别的日志消息。它们都是用于记录日志信息,但是通过 Logger 对象进行日志记录可以提供更多的配置选项和灵活性。
阅读全文
相关推荐
















