Python 日志输出到终端与文件配置
大家好,那个熟悉的我又回来了~
最近一段时间由于工作原因,用了一段时间python。接触到了坑爹的GIL锁、python日志,多进程、进程间通讯等。这次主要和大家聊一聊python日志。
我写的内容主要偏实践,如何配置、如何使用,针对一些其他设置,可以在网上找下,资料很丰富,就是略有些杂乱,这也是我自己写文章记录的一个原因。
先说下我用的环境:
①ubuntu14.0.4
②python 2.7.6
先上段代码压压惊:
#! /usr/bin/env python
# coding=utf-8
import os
import time
import logging
from Subloggerproject.sublogger import *
# 创建一个全局log
logger = logging.getLogger('main')
def logger_init(logdir='./logfiles', logfile='./logfiles/logger_test.log'):
# Log等级总开关
logger.setLevel(logging.INFO)
# 创建log目录
if not os.path.exists(logdir):
os.mkdir(logdir)
# 创建一个handler,用于写入日志文件
# 以append模式打开日志文件
fh = logging.FileHandler(logfile, mode='a')
# 输出到file的log等级的开关
fh.setLevel(logging.INFO)
# 再创建一个handler,用于输出到控制台
ch = logging.StreamHandler()
# 输出到console的log等级的开关
ch.setLevel(logging.INFO)
# 定义handler的输出格式
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
# formatter = logging.Formatter("%(asctime)s [%(thread)u] %(levelname)s: %(message)s")
# 为文件输出设定格式
fh.setFormatter(formatter)
# 控制台输出设定格式
ch.setFormatter(formatter)
# 设置文件输出到logger
logger.addHandler(fh)
# 设置控制台输出到logger
logger.addHandler(ch)
def test():
logger_init(logdir='./logfiles', logfile='./logfiles/logger_test.log')
logger.info("test logger-----------------------")
logger.error("test logger-----------------------")
subloggertest = SubLoggerTest()
subloggertest.subLoggerTest()
time.sleep(1)
if __name__ == '__main__':
test()
以上是我的主程序对logger的配置,改配置既可以在终端上输出日志信息,也可以向日志文件中输出日志信息。
下面是我在另一个模块中使用的日志代码:
#! /usr/bin/env python
# coding=utf-8
import logging
# 创建一个全局log
logger = logging.getLogger('main.sublogger')
class SubLoggerTest():
def __init__(self):
pass
def subLoggerTest(self):
logger.info("sub logger test-----------------------")
logger.error("sub logger test-----------------------")
def testSubLogger():
subloggertest = SubLoggerTest()
subloggertest.subLoggerTest()
在子模块中,只需要获取一个该模块的logger即可。
下面是程序运行结果。
下面是程序目录结构图:
大家好,这是我微信公众号号,欢迎大家关注。