Python-->logging....实例应用

import logging
logging.debug(‘debug message‘)
logging.info(‘info message‘)
logging.warning(‘warning message‘)
logging.error(‘error message‘)
logging.critical(‘critical message‘)

输出:
E:\Python>python lianxi.py
WARNING:root:warning message
ERROR:root:error message
CRITICAL:root:critical message

#默认情况下Python的logging模块将日志输出,且只输出大于等于WARNING级别的日志。(日志级别等级critical>error>warning>info>debug)( 危急>错误>警告>信息>调试>没有设置),默认输出的日志格式为 日志级别:logger名称:用户输出消息。
#设置日志的输出格式

import logging
logging.basicConfig(level=logging.DEBUG,
    format=‘%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s‘,
    datefmt=‘%a,%d %b %Y %H:%M:%S‘,
                #r‘xxx‘   r后接一个字符串表示其中的转义字符不解析
    filename=r‘E:\Python\test.log‘,
    filemode=‘w‘)
logging.debug(‘debug message‘)
logging.info(‘info message‘)
logging.warning(‘warning message‘)
logging.error(‘error message‘)
logging.critical(‘critical message‘)

文件内容为:
2016-05-15 10:05:24,843 lianxi.py[line:7] DEBUG debug message
2016-05-15 10:05:24,843 lianxi.py[line:8] INFO info message
2016-05-15 10:05:24,843 lianxi.py[line:9] WARNING warning message
2016-05-15 10:05:24,843 lianxi.py[line:10] ERROR error message
2016-05-15 10:05:24,843 lianxi.py[line:11] CRITICAL critical message

#可见在logging.basicConfig()函数中可以通过具体参数来更改logging模块的默认行为,可用参数有:
#ilename:用指定的文件名创建FileHandler,这样日志就会被储存在指定的文件中。
#filemode:文件打开的方式,在指定了filename时使用这个参数,默认为‘a’。
#format:  指定handler使用日期格式。
#datefmt:指定日期格式。
#level:     设置rootlogger的日志级别。
#stream: 用指定的stream创建streamhandler。当filename和stream两个参数,则stream参数会被忽略。

#format参数中可能用到的格式化串:
#%(name)s Logger的名字
#%(levelno)s 数字形式的日志级别
#%(levelname)s 文本形式的日志级别
#%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
#%(filename)s 调用日志输出函数的模块的文件名
#%(module)s 调用日志输出函数的模块名
#%(funcName)s 调用日志输出函数的函数名
#%(lineno)d 调用日志输出函数的语句所在的代码行
#%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
#%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
#%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
#%(thread)d 线程ID。可能没有
#%(threadName)s 线程名。可能没有
#%(process)d 进程ID。可能没有
#%(message)s用户输出的消息
#Logging的实例应用过程。。。。。

import logging            #1、申请logging模块   

logger = logging.getLogger("My_log")  #2、创建一个logging       logging.getLogger(name),name可不要

logger.setLverl(logging.INFO)     #3、设置logging的日志显示的级别
 
Filelog = logging.FileHandler(logfilename)  #4、创建一个日志的文件句柄 logfilename 是日志文件的路径

Streamlog = logging.StreamHandler()         #4、创建呢一个日志输出的句柄

Fmatter = logging.Formatter("%(asctime)s - %(filename)s - %(levelname)-8s: %(message)s",
                                             datefmt=‘%Y-%m-%d %I:%M:%S %p‘)   
                                             #5、设定日志输出到文件的格式
Smatter = logging.Formatter("%(asctime)s %(filename)s %(levelname)s:%(message)s",datefmt=‘%Y-%m-%d %I:%M:%S‘)    #5、设定日志输出的格式

Filelog.setFormatter(Fmatter)   #6、将日志文件格式加载
Streamlog.setFormattrt(Fmatter)     #6、将输出日志格式加载

Filelog.setLevel(logging.INFO)     #7、设置日志文件的级别,将决定输出的消息
Stream.setLevel(logging.INFO)  #7、设置日志输出的级别

logger.addHandler(Filelog)  #8、设置文件的输出方向
logger.addHandler(Stream) 

logger.info("msg")  #9、设置日志的输出内容,还有critical、error、warning、info、debug级别
                                #上面设定的日志输出级别决定了在这里需要定义那种级别的日志

logger.removeHandler(Filelog) #10、将句柄销毁
logger.removeHandler(Streamlog)
时间: 2024-10-14 06:22:18

Python-->logging....实例应用的相关文章

Python logging模块实例教程

position:static(静态定位) 当position属性定义为static时,可以将元素定义为静态位置,所谓静态位置就是各个元素在HTML文档流中应有的位置 podisition定位问题.所以当没有定义position属性时,并不说明该元素没有自己的位置,它会遵循默认显示为静态位置,在静态定位状态下无法通过坐标值(top,left,right,bottom)来改变它的位置. position:absolute(绝对定位) 当position属性定义为absolute时,元素会脱离文档流

python logging system

官方教程:https://docs.python.org/2/library/logging.html 1.  用法1 import logging import logging.handlers LOG_FILE = 'tst.log' handler = logging.handlers.RotatingFileHandler(LOG_FILE, maxBytes = 1024*1024, backupCount = 5) # 实例化handler fmt = '%(asctime)s -

python logging 日志轮转文件不删除问题

前言 最近在维护项目的python项目代码,项目使用了 python 的日志模块 logging, 设定了保存的日志数目, 不过没有生效,还要通过contab定时清理数据. 分析 项目使用了 logging 的 TimedRotatingFileHandler : 1 #!/user/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import logging 5 from logging.handlers import TimedRotatingFil

python logging - 高级

参考: Advanced logging tutorial:https://docs.python.org/2.7/howto/logging.html#advanced-logging-tutorial 15.7. logging - Logging facility for Python:https://docs.python.org/2.7/library/logging.html?highlight=logging#module-logging 15.8. logging.config

python logging 日志轮转文件不删除问题的解决方法

项目使用了 logging 的 TimedRotatingFileHandler : #!/user/bin/env python # -*- coding: utf-8 -*- import logging from logging.handlers import TimedRotatingFileHandler log = logging.getLogger() file_name = "./test.log" logformatter = logging.Formatter('%

python logging模块使用教程

简单使用 #!/usr/local/bin/python # -*- coding:utf-8 -*- import logging logging.debug('debug message') logging.info('info message') logging.warn('warn message') logging.error('error message') logging.critical('critical message') 输出: WARNING:root:warn mess

在日志中包含上下文信息及python logging详解

之前写过一篇文章日志的艺术(The art of logging),提到了输出日志的时候记录上下文信息的重要性,我认为上下文信息包括: when:log事件发生的时间 where:log事件发生在哪个模块(文件.函数) how important:log 事件的紧急程度 who:事件产生者的唯一标识 what:具体的事件内容,以及其他所必须的上下文信息 其中,when.where.how important都很容易通过logging框架自动包含,但是who(事件生产者的唯一标识)就不能框架自动填

python 编程实例 1

#python 100 例 1.py #题目:有 1.2.3.4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多 #少? a = {} c = 1 for i in range(1,5): for j in range(1,5): for k in range(1,5): if (i != j,i !=k ,j!= k): #                print (i,j,k) a[c]=(i,j,k) c = c + 1 print (a) #把结果输入到字典 a中,并用c记数

python 编程实例 2

#python 100 2.py #题目:企业发放的奖金根据利润提成.利润 (I)低于或等于 10 万元时,奖金可提 10%:利 #润高 于 10 万元,低于 20 万元时,低于 10 万元的部分按 10%提成,高于 10 万元的部分, #可可提  成 7.5%:20 万到 40 万之间时,高于 20 万元的部分,可提成 5%:40 万到 60 万之间 #时高于 40 万元的部分,可提成 3%:60 万到 100 万之间时,高于 60 万元的部分,可提成 #1.5%,高于 100 万元时,超过

python 编程实例 3

#python 100 例 3.py #题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数.求这个数. import math for x in range(1,100000): y = int(math.sqrt(x + 100)) z = int(math.sqrt(x + 268)) if ( x + 100 == y*y ) and ( x + 268 == z*z): print (x) python 编程实例 3,布布扣,bubuko.com