大量博客在介绍logging模块的使用,但少有关于跨模块或跨目录引用的示例,本人写一个,一个加深自己印象,另外就是有相似困惑的同学也可以参考一下,此为我个人非官方玩法,希望没有对你误导
很深,废话不多说,上代码:
#模块位于publicmylogger.py下
1 import logging
2 # 创建一个logger
3 logger = logging.getLogger('hadoop')
4 logger.setLevel(logging.DEBUG)
5
6 # 创建一个handler,用于写入日志文件
7 log_file = 'hadoop_toolspublicops.log'
8 fh = logging.FileHandler(log_file)
9 fh.setLevel(logging.INFO)
10
11 # 再创建一个handler,用于输出到控制台
12 ch = logging.StreamHandler()
13 ch.setLevel(logging.INFO)
14
15 # 定义handler的输出格式
16 formatter = logging.Formatter('[%(asctime)s][%(thread)d][%(filename)s][line: %(lineno)d][%(levelname)s] %(message)s')
17 fh.setFormatter(formatter)
18 ch.setFormatter(formatter)
19
20 # 给logger添加handler
21 logger.addHandler(fh)
22 logger.addHandler(ch)
23 # # 记录一条日志
24 logger.debug('this log come from public mylogger module')
#别的模块要引用怎么办法?
from public.mylogger import *
logger.setLevel('INFO')
logger.info("TEST WARN IMPORT ")