Python3.5 控制台日志输出,区分标准输出与错误输出

import logging
import sys

class ConsoleHandler(logging.Handler):
    terminator = ‘\n‘

    def __init__(self, level=logging.NOTSET):
        super().__init__(level)

    def _flush(self, stream):
        self.acquire()
        try:
            if stream and hasattr(stream, ‘flush‘):
                stream.flush()
        finally:
            self.release()

    def emit(self, record):
        try:
            msg = self.format(record)
            stream = sys.stderr if record.levelname == ‘ERROR‘else sys.stdout
            stream.write(msg)
            stream.write(self.terminator)
            self._flush(stream)
        except BaseException as ex:
            record.msg = record.getMessage() + ‘ WriteLogException:‘ + str(ex)
            self.handleError(record)

if __name__ == "__main__":
    _logger = logging.root
    _logger.setLevel(logging.INFO)
    formatter = logging.Formatter(‘%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s‘)
    _console_handler = ConsoleHandler(logging.INFO)
    _console_handler.setFormatter(formatter)
    _logger.addHandler(_console_handler)
    logging.info(‘info‘)
    logging.error(‘error‘)

原文地址:https://www.cnblogs.com/stones/p/8340864.html

时间: 2024-10-11 13:04:41

Python3.5 控制台日志输出,区分标准输出与错误输出的相关文章

Linux标准输入、标准输出、错误输出

Linux中的输入文件.输出文件.错误输出 文件名称 文件描述符 标准输入 0 (默认是键盘) 标准输出 1 (默认是屏幕) 标准错误 2 (默认是屏幕) 输出重定向 Linux中&表示后台运行,>表示输出重定向 命令 描述 command > file 标准输出重定向到文件中,文件不存在时会自动创建再写入,文件存在时会先删除文件中的内容再写入 command >> file 标准输出重定向到文件中,文件不存在时会自动创建再写入命令产生的标准输出,文件存在时不改变原文件内容

[转帖]Linux的标准输入 标准输出和错误输出

https://www.cnblogs.com/softidea/p/3965093.html 感觉自己对 这一块的理解一直不好 昨天同事给了一个 bat 文件也用到了标准输入 直接通过文件进行输入 脚本参数内容 比之前写脚本参数容易的多也规整的多 今天再看 linux的标准输入和标准输出 尤其是哪一句 2>&1 将错误输出 重定向到标准输出 自己竟然一直没有理解到 & 其实是地址符号的意思.. 这一块是在是太low了. 当我们在shell中执行命令的时候,每个进程都和三个打开的文件

shell 标出输入、标准输出、错误输出

shell中可能经常能看到:>/dev/null  2>&1 eg:sudo kill -9 `ps -elf |grep -v grep|grep $1|awk '{print $4}'` 1>/dev/null 2>/dev/null 命令的结果可以通过%>的形式来定义输出 /dev/null 代表空设备文件 > 代表重定向到哪里,例如:echo "123" > /home/123.txt 1 表示stdout标准输出,系统默认值是

Linux shell标准输入,标准输出,错误输出

shell中可能经常能看到:1>/dev/null  2>&1 eg:sudo kill -9 `ps -elf |grep -v grep|grep $1|awk '{print $4}'` 1>/dev/null 2>/dev/null 命令的结果可以通过%>的形式来定义输出 /dev/null 代表空设备文件> 代表重定向到哪里,例如:echo "123" > /home/123.txt1 表示stdout标准输出,系统默认值是1

shell 中 标准输出和错误输出

命令 标准输出 标准错误 >/dev/null 2>&1 丢弃 丢弃 2>&1 >/dev/null 丢弃 屏幕 1>/dev/null 丢弃 屏幕 2>/dev/null 屏幕 丢弃      

如何将标准输出和错误输出同时重定向到同一位置?

方法一: 2>&1 (# ls /usr/share/doc > out.txt 2>&1 ) 方法二: &> (# ls /usr/share/doc &> out.txt ) 原文地址:https://www.cnblogs.com/sea-stream/p/12003105.html

linux将标准输出和标准错误输出都重定向到一个文件?

需求描述: 今天在写crontab,里面有标准输出和错误输出,之前使用的是 > /dev/null 2>&1 那这个意思也就等同于将标准输出和错误输出都输出到/dev/null中,在这里记录下 操作过程: 1.原crontab定时任务,分别对标准输出和标准错误输出进行定向 [[email protected] mail]# crontab -l */1 * * * * /usr/sbin/ntpdate 192.168.53.22 >/dev/null 2>&1 2

【docker】docker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志

如题: docker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志 场景再现: docker部署并启动了  springboot服务,容器启动正常,docker exec 也可以正常进入容器内部,但是docker logs 控制台并没有日志打印出来. 同样的,/var/lib/docker/containers目录下的对应容器目录中,也没有对应的 *-json.log日志文件生成. 原因: dock

写自己的游戏 - 用颜色来区分不同的log输出(cocos2d-x) 同样适用于其他游戏引擎

游戏脚本化开发已经成为一种主流的趋势,伴随着产生大量的人才需求.近两年,各个游戏公司对于lua程序员的需求明显是增长额有点过分了,真的是太不正常了.抛开市场化需求的东西不谈,我们谈一些技术,一些琐碎的,可有可无,非重点的技术.近几天我都在写客户端的开发框架,目的就是让LUA程序员可以使用一款自己喜欢的编辑器,版本控制工具以及部分内部工具就可以随心所欲的开发逻辑模块,这对我来说也算是满有挑战性的,不过我喜欢,反正我都是写给自己玩,又不用别人去要求什么,所以随心所欲吧,尽量做到最好. 对于cocos