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即可。

下面是程序运行结果。

 

Python 日志输出到终端与文件配置_第1张图片

 

Python 日志输出到终端与文件配置_第2张图片

 

下面是程序目录结构图:

 

Python 日志输出到终端与文件配置_第3张图片

 

 

Python 日志输出到终端与文件配置_第4张图片

 

大家好,这是我微信公众号号,欢迎大家关注。

                                          Python 日志输出到终端与文件配置_第5张图片

你可能感兴趣的:(写bug)