之前自己写程序很少用到log,最近在写C++和python时都遇到了这个问题,记录在此。
C++:
#include <glog/logging.h>
#include <gflags/gflags.h>
LOG(INFO) <<fileVec[i]<<endl;
就是把所有之前我在cout的地方改成LOG,可以定义级别
python:
简单标准的写法:
#!/usr/bin/env python
# encoding: utf-8
import os
import logging
def create_logger(logger_name,
log_format=None,
log_level=logging.INFO,
log_path=None):
logger = logging.getLogger(logger_name)
assert (len(logger.handlers) == 0)
logger.setLevel(log_level)
if log_path is None:
handler = logging.StreamHandler()
else:
os.stat(os.path.dirname(os.path.abspath(log_path)))
handler = logging.FileHandler(log_path)
handler.setLevel(log_level)
if log_format is not None:
formatter = logging.Formatter(log_format)
handler.setFormatter(formatter)
logger.addHandler(handler)
return logger
logger = create_logger(
logger_name='template',
log_format='[%(asctime)s %(name)-13s \
%(levelname)s %(process)d \
%(thread)d %(filename)s:%(lineno)-5d] \
%(message)s',
log_level=logging.INFO)
标准的脚本例子:
#!/usr/bin/env python
# encoding: utf-8
import os
import argparse
import logging
def create_logger(logger_name,
log_format=None,
log_level=logging.INFO,
log_path=None):
logger = logging.getLogger(logger_name)
assert (len(logger.handlers) == 0)
logger.setLevel(log_level)
if log_path is None:
handler = logging.StreamHandler()
else:
os.stat(os.path.dirname(os.path.abspath(log_path)))
handler = logging.FileHandler(log_path)
handler.setLevel(log_level)
if log_format is not None:
formatter = logging.Formatter(log_format)
handler.setFormatter(formatter)
logger.addHandler(handler)
return logger
logger = create_logger(
logger_name='template',
log_format='[%(asctime)s %(name)-13s \
%(levelname)s %(process)d \
%(thread)d %(filename)s:%(lineno)-5d] \
%(message)s',
log_level=logging.INFO)
parser = argparse.ArgumentParser()
parser.add_argument("--a", default=1, type=int, help='one param to add')
parser.add_argument("--b", default=0, type=int, help='another param to add')
args = parser.parse_args()
def main():
exit(0)
if __name__ == '__main__':
main()
另外贴上一个博客:
https://thief.one/2017/11/10/1/