log_handle.setFormatter(formatter)
时间: 2024-05-27 15:10:03 浏览: 18
这段代码的作用是将日志处理器(logger handler)使用自定义的格式化器(formatter)进行格式化输出。在 Python 的 logging 模块中,日志处理器负责将日志记录(log record)输出到指定的位置,而格式化器则负责将日志记录的信息按照指定格式进行格式化输出。通过使用 setFormatter() 方法,我们可以将我们自定义的格式化器应用到日志处理器中,从而实现自定义的日志输出格式。
相关问题
将这段代码改为C++:import os from logging import getLogger, DEBUG, handlers, Formatter from src.config import temp, basic base_dir = basic.temp_root_dir + "/ahsg/" def log_record(log_name=None, file_name=None, file_size=None, file_bat=None): if not isinstance(log_name, str): log_name = 'logg' if not (isinstance(file_name, str) and file_name.endswith('.log')): file_name = f'{log_name}.log' if not isinstance(file_size, int): file_size = 5000000 if not isinstance(file_bat, int): file_bat = 1 __loggg = getLogger(log_name) if not __loggg.handlers: __loggg.setLevel(DEBUG) file_log = handlers.RotatingFileHandler(file_name, maxBytes=file_size, backupCount=file_bat) file_log.setFormatter(Formatter(f"%(asctime)s-['{log_name}']-%(levelname)s:%(message)s")) __loggg.addHandler(file_log) return __loggg log_report_station_behaviour = log_record('station_behaviour', base_dir + 'station_behaviour.log') log_report_timing_violation_placement = log_record('timing_violation_placement', base_dir + 'timing_violation_placement.log') log_report_region_detection = log_record('region_detection', base_dir + 'region_detection.log')
#include <iostream>
#include <string>
#include <fstream>
#include <ctime>
#include <iomanip>
#include "src/config.h"
using namespace std;
string base_dir = basic.temp_root_dir + "/ahsg/";
logger log_record(string log_name = "", string file_name = "", int file_size = 0, int file_bat = 0) {
if (log_name.empty()) {
log_name = "logg";
}
if (file_name.empty() || file_name.substr(file_name.length() - 4) != ".log") {
file_name = log_name + ".log";
}
if (file_size == 0) {
file_size = 5000000;
}
if (file_bat == 0) {
file_bat = 1;
}
logger __loggg = getLogger(log_name);
if (__loggg.handlers().empty()) {
__loggg.setLevel(DEBUG);
handlers::RotatingFileHandler file_log(file_name, maxBytes=file_size, backupCount=file_bat);
file_log.setFormatter(Formatter("%(asctime)s-['" + log_name + "']-%(levelname)s:%(message)s"));
__loggg.addHandler(file_log);
}
return __loggg;
}
logger log_report_station_behaviour = log_record("station_behaviour", base_dir + "station_behaviour.log");
logger log_report_timing_violation_placement = log_record("timing_violation_placement", base_dir + "timing_violation_placement.log");
logger log_report_region_detection = log_record("region_detection", base_dir + "region_detection.log");
int main() {
// your code here
return 0;
}
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)
这段代码是一个用于设置日志记录的函数。它接受一个日志记录器名称和可选的日志文件路径作为参数。如果已经存在与给定名称相同的日志处理程序,函数将输出"LogHandlers exists!",否则将设置新的日志处理程序。
函数首先创建一个日志记录器对象,并检查是否已经存在处理程序。如果存在,则输出"LogHandlers exists!",表示日志已经设置过了。如果不存在处理程序,则创建一个新的处理程序,并设置其级别为INFO。接下来,创建一个文件处理程序(FileHandler)用于将日志记录到文件中,并设置格式化器(Formatter)以指定日志消息的格式。然后,将文件处理程序添加到日志记录器中。
接下来,创建一个流处理程序(StreamHandler)用于将日志消息输出到控制台,并设置相同的格式化器。最后,将流处理程序添加到日志记录器中。
这段代码中的注释部分可能是用于调试目的,它会输出日志处理程序的数量。
相关推荐
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)