logging基本使用方法

Posted diysoul

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了logging基本使用方法相关的知识,希望对你有一定的参考价值。

步骤:
1.配置日志信息 logging.basicConfig
2.取得 logging.Logger 对象
3.使用 Logger 对象输出信息
以下是一个简单的封装,模拟实现 android 中的 Log 类
import logging
import sys

str_def_fmt = "%(asctime)s.%(msecs)03d %(thread)d %(levelname)s "               "%(module)s %(filename)s:%(lineno)d %(funcName)s %(message)s"
logging.basicConfig(level=logging.DEBUG
                    , format=str_def_fmt
                    , datefmt="%Y:%m:%d %H:%M:%S"
                    , stream=sys.stdout)
logger = logging.getLogger("log")


def setAsDebugLevel():
    logger.setLevel(logging.DEBUG)

def setAsInfoLevel():
    logger.setLevel(logging.INFO)

def setAsWarnLevel():
    logger.setLevel(logging.WARN)

def setAsErrorLevel():
    logger.setLevel(logging.ERROR)

def setAsFatalLevel():
    logger.setLevel(logging.FATAL)

d = logger.debug
i = logger.info
w = logger.warning
e = logger.error
f = logger.fatal


def main():
    d("test debug msg")
    i("test info msg")
    w("test warn msg")
    e("test err msg")
    f("test fatal msg")


if __name__ == "__main__":
    main()

 



相关参数说明:

logging.basicConfig 参数说明
    默认会创建一个 StreamHandler 并输出到 sys.stderr, 并且使用 BASIC_FORMAT(%(levelname)s:%(name)s:%(message)s) 格式化信息

filename:    指定日志文件名, 此时不会再输出到 StreamHandler 中, 即使指定了新的 stream
filemode:    指定日志文件的打开模式, w或者a, 默认为a
format:      指定输出的内容格式, 其配置信息见下文
datefmt:     输出日期和时间的格式字符串. 与 time.strftime 格式兼容, 不能指定到毫秒级别, 其详细信息见下文
level        设置日志输出的级别, 小于此级别的信息将被忽略, 默认为 WARNING
stream       指定输出的流, 默认为 sys.stderr, 如果指定了 filename, 此参数不起作用
handlers     If specified, this should be an iterable of already created handlers, which will be added to the root handler. Any handler in the list which does not have a formatter assigned will be assigned the formatter created in this function.
force        If this keyword is specified as true, any existing handlers attached to the root logger are removed and closed, before carrying out the configuration as specified by the other arguments.


日志级别:
级别                 值       描述
CRITICAL/FATAL       50       关键错误消息
ERROR                40       错误
WARNING(WARN)        30       警告消息
INFO                 20       通知消息
DEBUG                10       调试
NOTSET               0        无级别


format 配置格式:
%(name)s            logger 名称, 即调用 logging.getLogger 函数传入的参数
%(levelno)s         数字形式的日志记录级别
%(levelname)s       日志级别文本描述, 即"DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"
%(pathname)s        执行日志记录调用的源文件路径
%(filename)s        执行日志记录调用的源文件名
%(module)s          执行日志记录调用的模块名称
%(lineno)d          执行日志记录调用的行号
%(funcName)s        执行日志记录调用的函数路径
%(created)f         执行日志记录调用的时间, 它是 time.time() 返回的数字
%(asctime)s         执行日志记录调用的ascii格式的时间, 其格式由 datefmt 指定
%(msecs)d           执行日志记录调用的时间中的毫秒部分
%(thread)d          线程id (if available)
%(threadName)s      线程名称 (if available)
%(process)d         进程ID (if available)
%(message)s         记录的消息, 如 logging.getLogger().debug(msg) 指定的 msg


datefmt
%y        两位数的年份表示(00-99%Y        四位数的年份表示(000-9999%m        月份(01-12%d        月内中的一天(0-31%H        24小时制小时数(0-23%I        12小时制小时数(01-12%M        分钟数(00=59%S        秒(00-59%a        本地简化星期名称
%A        本地完整星期名称
%b        本地简化的月份名称
%B        本地完整的月份名称
%c        本地相应的日期表示和时间表示
%j        年内的一天(001-366%p        本地A.M.或P.M.的等价符
%U        一年中的星期数(00-53)星期天为星期的开始
%w        星期(0-6),星期天为星期的开始
%W        一年中的星期数(00-53)星期一为星期的开始
%x        本地相应的日期表示
%X        本地相应的时间表示
%Z        当前时区的名称
%%        %号本身

 

以上是关于logging基本使用方法的主要内容,如果未能解决你的问题,请参考以下文章

日志架构log4j基本使用

Log4j基本使用方法

Log4j—— Log4j基本使用方法

log4j2.xml基本配置

log4j2的基本使用

Log4j2基本使用入门