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

下面是程序运行结果。

 

 

 

下面是程序目录结构图:

 

 

 

 

欢迎关注微信公众号。

学不可以已!

                                          

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值