# -*- coding: utf8 -*-
import logging # 创建一个logger
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG) # 创建一个handler,用于写入日志文件
fh = logging.FileHandler('test.log')
fh.setLevel(logging.DEBUG) # 再创建一个handler,用于输出到控制台,仅输出错误信息
ch = logging.StreamHandler()
ch.setLevel(logging.WARNING) # 定义handler的输出格式
formatter_f = logging.Formatter('[%(asctime)s][%(process)d:%(thread)d][%(levelname)s] %(message)s')
fh.setFormatter(formatter_f)
formatter_c = logging.Formatter('%(levelname)s: %(message)s')
ch.setFormatter(formatter_c) # 给logger添加handler
logger.addHandler(fh)
logger.addHandler(ch) # 记录日志
logger.debug('debug')
logger.info('info')
logger.warning('warning')
logger.error('error')
logger.critical('critical')

[蟒蛇菜谱]Python日志记录最佳实践的更多相关文章

  1. [蟒蛇菜谱]Python函数参数传递最佳实践

    将函数作为参数传递,同时将该函数需要的参数一起传递.可参考threading.Timer的处理方式: class threading.Timer(interval, function, args=[] ...

  2. OneAPM大讲堂 | Java 异常日志记录最佳实践

    [编者按]本文作者是 Casey Dunham.Casey 是一位具有 10 多年经验的专业软件开发人员,以其独特的方式应对应用安全问题而闻名.本文系国内 ITOM 管理平台 OneAPM 工程师编译 ...

  3. Java 日志管理最佳实践

    转:http://blog.jobbole.com/51155/ 日志记录是应用程序运行中必不可少的一部分.具有良好格式和完备信息的日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源.对于开 ...

  4. paip.python ide 总结最佳实践o4.

    paip.python ide 总结最佳实践o4. ====2个重要的标准 1.可以自动补全 2.可以断点调试 =======选型使用报告 Komodo正好儿俄机器上有,使用累挂,自动补全还凑火.就是 ...

  5. paip.python连接mysql最佳实践o4

    paip.python连接mysql最佳实践o4 python连接mysql 还使用了不少时间...,相比php困难多了..麻烦的.. 而php,就容易的多兰.. python标准库没mysql库,只 ...

  6. Python 日志记录与程序流追踪(基础篇)

    日志记录(Logging) More than print: 每次用 terminal debug 时都要手动在各种可能出现 bug 的地方 print 相关信息来确认 bug 的位置: 每次完成 d ...

  7. Python日志记录(Logging)

    日志记录跟程序的测试相关,并且在大幅度更改程序内核时很有用,它可以帮助我们找到问题和错误的所在.日志记录基本上就是收集与程序运行有关的数据,这样可以在随后进行检查或者累计数据. 1.简单示例 在Pyt ...

  8. Docker容器日志管理最佳实践

    目录 一 .Docker 引擎日志 二.容器日志 2.1.常用查看日志命令--docker logs 2.2 .Docker 日志 驱动 三. 生产环境中该如何储存容器中的日志 一.当是完全是标准输出 ...

  9. Docker 日志管理最佳实践

    开源Linux 回复"读书",挑选书籍资料~ Docker-CE Server Version: 18.09.6 Storage Driver: overlay2 Kernel V ...

随机推荐

  1. match() vs search()

    match() 函数只检查 RE 是否在字符串开始处匹配,而 search() 则是扫描整个字符串.记住这一区别是重要的.记住,match() 只报告一次成功的匹配,它将从 0 处开始:如果匹配不是从 ...

  2. composer 使用详解

    1,安装 php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r &quo ...

  3. Selenium ide录制回放错误Timed out after 30000ms

    [error] Timed out after 30000ms     该问题可能是速度控制条播放速度过快导致,调整播放速度至slow 

  4. 解决: org.iq80.leveldb.DBException: IO error: C:\data\trie\000945.sst: Could not create random access file.

    以太坊MPT树的持久化层是采用了leveldb数据库,然而在抽取MPT树代码运行过程中,进行get和write操作时却发生了错误: Caused by: org.fusesource.leveldbj ...

  5. 判断iframe是否加载完成的完美方法

    var iframe = document.createElement("iframe"); iframe.src = "http://www.jb51.net" ...

  6. Rank() 、DENSE_RANK()、NTILE(n)的用法-转

    Rank() over()/DENSE_RANK()  over()的用法 1.Rank() over()/DENSE_RANK()  over() 这两个函数与ROW_NUMBER()函数类似,因为 ...

  7. 关于在终端运行rosrun时找不到对应的包的解决方法

    输入命令:rosrun kinect2_bridge kinect2_bridge 错误如下:[rospack] Error: package 'kinect2_bridge' not found 解 ...

  8. I/O

    IO流:1:字节流(inputStream:输入流)(outputStream:输出流).2:字符流(reader:输入流)(winter:输出流). 首先判断是输入还是输出(站在计算机的立场):其次 ...

  9. 5、HTML5列表、块和布局

    1.块元素 块元素在显示的时候,通常会以新行开始 如:<h1> <p> <ul> <!-- 块—>注释 <p>hello</p> ...

  10. 关于StatusStrip控件和StatusBar控件的小试

    今天,在网上查找资料,突然看到一个例子,但例子中提及的StatusBar控件,我发现在vs控件压根不存在,我就郁闷了,于是上网查找才知道,现在这个控件已经被StatusStrip控件给吞了,Statu ...