精华内容
下载资源
问答
  • print('python') logging.debug("calling sys.system python") logging.debug("executing python with give dir path") 将产生以下输出: ^{pr2}$ 您可以轻松地捕捉异常并让它们抛出更多关键事件。在try: really_...

    你知道,有一个^{}模块!在import logging

    import os

    logging.basicConfig(filename='tmp.log',

    format='%(levelname)s %(asctime)s :: %(message)s',

    level=logging.DEBUG)

    # format is a formatter string, level shows what level of logs it will record

    # in this case it is everything!

    # Levels are as follows from most to least critical

    # CRITICAL

    # ERROR

    # WARNING

    # INFO

    # DEBUG

    do = True

    yes = True

    do_the_work = lambda: None

    def main():

    logging.debug("Inside of main()")

    if do:

    logging.debug("Inside of if do:")

    do_the_work()

    logging.debug("doing work")

    if yes:

    logging.debug("inside of if yes:")

    do_the_work()

    logging.debug("doing work")

    for list in os.listdir('.'): # there were three files in my folder

    logging.debug("inside of for each files/dirs calling list")

    print('python')

    logging.debug("calling sys.system python")

    logging.debug("executing python with give dir path")

    将产生以下输出:

    ^{pr2}$

    您可以轻松地捕捉异常并让它们抛出更多关键事件。在try:

    really_important_method()

    except EndOfTheWorldError:

    logging.critical("Duck and cover boys, it's gonna blow.")

    展开全文
  • python 生成模拟日志

    2021-02-04 01:29:00
    # -*- coding: utf-8 -*import randomhttp_referers = ["https://www.baidu.com/s?wd={query}","https://www.sogou.com/web?qu={query}","http://cn.bing.com/search?q={query}",...

    # -*- coding: utf-8 -*

    import random

    http_referers = [

    "https://www.baidu.com/s?wd={query}",

    "https://www.sogou.com/web?qu={query}",

    "http://cn.bing.com/search?q={query}",

    "https://search.yahoo.com/search?p={query}"

    ]

    search_keyword = [

    "猎场", "快乐人生",

    "极限挑战",

    "我的体育老师",

    "幸福满院"

    ]

    url_paths=[

    "www/2",

    "www/1",

    "www/6",

    "www/4",

    "www/3",

    "pianhuan/130",

    "toukouxu/821"

    ]

    ip_slices=[132,156,124,10,29,167,143,187,30,100]

    status_code=[404,302,200]

    def sample_status_code():

    return random.sample(status_code,1)[0]

    def sample_urls():

    return random.sample(url_paths,1)[0]

    def sample_ip():

    slice = random.sample(ip_slices,4)

    return ".".join([str(item) for item in slice])

    def sample_referer():

    if random.uniform(0,1) > 0.2:

    return "-"

    refer_str = random.sample(http_referers,1)

    #print refer_str[0]

    query_str = random.sample(search_keyword,1)

    #print query_str[0]

    return refer_str[0].format(query=query_str[0])

    import time

    def generate_log(count = 10):

    time_str = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())

    with open("/aiqiyi/code/logs", 'w') as f:

    while count >= 1:

    query_log = "{ip}\t{localtime}\t\"GET /{url} HTTP/1.1\"\t{refer}\t{status_code}".format(ip = sample_ip(),url= sample_urls(),localtime = time_str,refer = sample_referer(),status_code = sample_status_code())

    print query_log

    f.write(query_log+'\n')

    count = count -1

    if __name__ == '__main__':

    generate_log(10)

    展开全文
  • 许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪。在.NET平台中,有非常著名...logging模块支持将日志信息保存到不同的目标域中,如:保存到日志文件中;以...

    许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪。在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4cpp,而在python中,我们不需要第三方的日志组件,因为它已经为我们提供了简单易用、且功能强大的日志模块:logging。logging模块支持将日志信息保存到不同的目标域中,如:保存到日志文件中;以邮件的形式发送日志信息;以http get或post的方式提交日志到web服务器;以windows事件的形式记录等等。这些日志保存方式可以组合使用,每种方式可以设置自己的日志级别以及日志格式。日志模块的内容比较多,今天先学习logging模块的基本使用,下次具体学习日志的处理。

    先看一个比较简单的例子,让我们对logging模块有个感性的认识:

    importlogging

    logging.basicConfig(filename = os.path.join(os.getcwd(),'log.txt'), level = logging.DEBUG)

    logging.debug('this is a message')

    import logging logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), level = logging.DEBUG) logging.debug('this is a message')

    运行上面例子的代码,将会在程序的根目录下创建一个log.txt文件,打开该文件,里面有一条日志记录:"DEBUG:root:this is a message"。

    4个主要的组件

    logger: 日志类,应用程序往往通过调用它提供的api来记录日志;

    handler: 对日志信息处理,可以将日志发送(保存)到不同的目标域中;

    filter: 对日志信息进行过滤;

    formatter:日志的格式化;

    日志级别

    在记录日志时, 日志消息都会关联一个级别("级别"本质上是一个非负整数)。系统默认提供了6个级别,它们分别是:

    级别

    对应的值

    CRITICAL

    50

    ERROR

    40

    WARNING

    30

    INFO

    20

    DEBUG

    10

    NOTSET

    0

    可以给日志对象(Logger Instance)设置日志级别,低于该级别的日志消息将会被忽略,也可以给Hanlder设置日志级别,对于低于该级别的日志消息, Handler也会忽略。

    logging模块中的常用函数:

    logging.basicConfig([**kwargs]):

    为日志模块配置基本信息。kwargs 支持如下几个关键字参数:

    filename :日志文件的保存路径。如果配置了些参数,将自动创建一个FileHandler作为Handler;

    filemode :日志文件的打开模式。 默认值为'a',表示日志消息以追加的形式添加到日志文件中。如果设为'w', 那么每次程序启动的时候都会创建一个新的日志文件;

    format :设置日志输出格式;

    datefmt :定义日期格式;

    level :设置日志的级别.对低于该级别的日志消息将被忽略;

    stream :设置特定的流用于初始化StreamHandler;

    下面是一个简单的例子:

    #coding=gbk

    importlogging

    logging.basicConfig(filename = os.path.join(os.getcwd(),'log.txt'), \

    level = logging.WARN, filemode ='w', format ='%(asctime)s - %(levelname)s: %(message)s')

    logging.debug('debug')#被忽略

    logging.info('info')#被忽略

    logging.warning('warn')

    logging.error('error')

    #----- 结果

    #2009-07-13 21:42:15,592 - WARNING: warn

    #2009-07-13 21:42:15,640 - ERROR: error

    #coding=gbk import logging logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), \ level = logging.WARN, filemode = 'w', format = '%(asctime)s - %(levelname)s: %(message)s') logging.debug('debug')#被忽略 logging.info('info')#被忽略 logging.warning('warn') logging.error('error') #----- 结果 #2009-07-13 21:42:15,592 - WARNING: warn #2009-07-13 21:42:15,640 - ERROR: error

    logging.getLogger([name])

    创建Logger对象。日志记录的工作主要由Logger对象来完成。在调用getLogger时要提供Logger的名称(注:多次使用相同名称来调用getLogger,返回的是同一个对象的引用。),Logger实例之间有层次关系,这些关系通过Logger名称来体现,如:

    p = logging.getLogger("root")

    c1 = logging.getLogger("root.c1")

    c2 = logging.getLogger("root.c2")

    例子中,p是父logger, c1,c2分别是p的子logger。c1, c2将继承p的设置。如果省略了name参数, getLogger将返回日志对象层次关系中的根Logger。

    logging.setLoggerClass(klass)

    logging.getLoggerClass()

    获取/设置日志类型。用户可以自定义日志类来代替系统提供的logging.Logger类。

    logging.getLevelName(lvl)

    获取日志级别对应的名称。例如:

    printlogging.getLevelName(logging.NOTSET)

    printlogging.getLevelName(10)#logging.DEBUG

    printlogging.getLevelName(logging.DEBUG)

    printlogging.getLevelName(30)#logging.WARN

    printlogging.getLevelName(logging.ERROR)

    printlogging.getLevelName(50)#logging.CRITICAL

    print logging.getLevelName(logging.NOTSET) print logging.getLevelName(10) #logging.DEBUG print logging.getLevelName(logging.DEBUG) print logging.getLevelName(30) #logging.WARN print logging.getLevelName(logging.ERROR) print logging.getLevelName(50) #logging.CRITICAL

    logging.shutdown()

    当不再使用日志系统的时候,调用该方法,它会将日志flush到对应的目标域上。一般在系统退出的时候调用。

    Logger对象 通过调用logging.getLogger(name)来创建,它有如下常用的方法和属性:

    Logger.setLevel(lvl):

    设置日志的级别。对于低于该级别的日志消息将被忽略。下面一个例子演示setLevel方法:

    #coding=gbk

    import logging

    logging.basicConfig(filename = os.path.join(os.getcwd(),'log.txt'), level = logging.DEBUG)

    log = logging.getLogger('root.test')

    log.setLevel(logging.WARN)  #日志记录级别为WARNNING

    log.info('info')    #不会被记录

    log.debug('debug')  #不会被记录

    log.warning('warnning')

    log.error('error')

    #coding=gbk import logging logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), level = logging.DEBUG) log = logging.getLogger('root.test') log.setLevel(logging.WARN) #日志记录级别为WARNNING log.info('info') #不会被记录 log.debug('debug') #不会被记录 log.warning('warnning') log.error('error')

    Logger.debug(msg [ ,*args [, **kwargs]])

    记录DEBUG级别的日志信息。参数msg是信息的格式,args与kwargs分别是格式参数。

    importlogging

    logging.basicConfig(filename = os.path.join(os.getcwd(),'log.txt'), level = logging.DEBUG)

    log = logging.getLogger('root')

    log.debug('%s, %s, %s', *('error','debug','info'))

    log.debug('%(module)s, %(info)s', {'module':'log','info':'error'})

    import logging logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), level = logging.DEBUG) log = logging.getLogger('root') log.debug('%s, %s, %s', *('error', 'debug', 'info')) log.debug('%(module)s, %(info)s', {'module': 'log', 'info': 'error'})

    Logger.info(msg[ , *args[ , **kwargs] ] )

    Logger.warnning(msg[ , *args[ , **kwargs] ] )

    Logger.error(msg[ , *args[ , **kwargs] ] )

    Logger.critical(msg[ , *args[ , **kwargs] ] )

    记录相应级别的日志信息。参数的含义与Logger.debug一样。

    Logger.log(lvl, msg[ , *args[ , **kwargs] ] )

    记录日志,参数lvl用户设置日志信息的级别。参数msg, *args, **kwargs的含义与Logger.debug一样。

    Logger.exception(msg[, *args])

    以ERROR级别记录日志消息,异常跟踪信息将被自动添加到日志消息里。Logger.exception通过用在异常处理块中,如:

    importlogging

    logging.basicConfig(filename = os.path.join(os.getcwd(),'log.txt'), level = logging.DEBUG)

    log = logging.getLogger('root')

    try:

    raiseException,'this is a exception'

    except:

    log.exception('exception')#异常信息被自动添加到日志消息中

    import logging logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), level = logging.DEBUG) log = logging.getLogger('root') try: raise Exception, 'this is a exception' except: log.exception('exception') #异常信息被自动添加到日志消息中

    Logger.addFilter(filt)

    Logger.removeFilter(filt)

    添加/移除日志消息过滤器。在讲述Filter时具体介绍。

    Logger.addHandler(hdlr)

    Logger.removeHandler(hdlr)

    添加/移除日志消息处理器。在讲述Handler时具体介绍。

    Logger.makeRecord(name, lvl, fn, lno, msg, args, exc_info[, func, extra])

    创建LogRecord对象。日志消息被实例为一个LogRecord对象,并在日志类内处理。

    展开全文
  • 我一夜之间运行了一个Python脚本,发现日志文件只是我指定的消息格式的重复行,而不是实际的消息。在main模块中,我创建了如下记录器:from datetime import datetimeimport loggingimport osdef main():msg_format = '...

    我一夜之间运行了一个Python脚本,发现日志文件只是我指定的消息格式的重复行,而不是实际的消息。在

    main

    模块中,我创建了如下记录器:

    from datetime import datetime

    import logging

    import os

    def main():

    msg_format = '[%(asctime)s - %(levelname)s - %(filename)s: %(lineno)d (%(funcName)s)] %(message)s'

    logging.basicConfig(format=msg_format, level=logging.INFO)

    logger = logging.getLogger()

    logger.setLevel(level=logging.INFO)

    timestamp = datetime.now().strftime(format='%Y%m%d-%H%M')

    log_filename = '_'.join(['log', run_type, timestamp]) + '.txt'

    save_pathname = '_'.join([run_type, datetime.now().strftime(format='%Y%m%d')])

    save_path = os.path.join(save_path, save_pathname)

    if not os.path.exists(save_path):

    os.mkdir(path=save_path)

    log_file = os.path.join(save_path, log_filename)

    file_handler = logging.FileHandler(filename=log_file)

    file_handler.setLevel(level=logging.INFO)

    file_handler.setFormatter(fmt=msg_format)

    logger.addHandler(hdlr=file_handler)

    .

    .

    .

    logger.info(msg='something')

    整个模块中的语句。当我打开日志文件时,我看到的只是:

    [%(asctime)s - %(levelname)s - %(filename)s: %(lineno)d (%(funcName)s)] %(message)s

    [%(asctime)s - %(levelname)s - %(filename)s: %(lineno)d (%(funcName)s)] %(message)s

    [%(asctime)s - %(levelname)s - %(filename)s: %(lineno)d (%(funcName)s)] %(message)s

    [%(asctime)s - %(levelname)s - %(filename)s: %(lineno)d (%(funcName)s)] %(message)s

    .

    .

    .

    日志初始化的哪个部分出错了?我应该显式地设置吗

    filemode='w'

    logging.basicConfig

    ? 谢谢。

    展开全文
  • 正如this question中的@MartijnPieters所建议的...例如,我的类只保存最后一个“备份计数”文件。在import osimport reimport datetimeimport loggingfrom itertools import isliceclass TimedPatternFileHandler(lo...
  • What is the methodology for knowing where Python log statements are stored?i.e. if i do:import logginglog = logging.getLogger(__name__)log.info('Test')Where could I find the logfile? Also, when I call...
  • python实现log日志输出并管理日志文件 功能: 用于py脚本的log记录, 以天为单位(每天都会生成一个新的log文件),log文件在目录下最多保留7天 创建脚本: 建立log.py文件,内容如下: import os import time import...
  • I would like to use python's logging framework in my application, and I'd like to allow the end user of my application to specify the log file. (Via the Python logging framework's configuration mechan...
  • 日志文件一般是按天产生,则通过在程序中判断文件的产生日期与当前时间,更换监控的日志文件程序只是简单的示例一下,监控test1.log 10秒,转向监控test2.log程序监控使用是linux的命令tail -f来动态监控新追加的...
  • 它允许我在从开发到发布的过程中切换日志级别、位置等,而无需更改代码。我只是用相同的名称和定义的记录器打包不同的配置文件。import logging.configif __name__ == '__main__':# Configure the logger# ...
  • python写入log日志文件

    2021-10-28 16:57:00
    Python + logging 输出到屏幕,将log日志写入文件 - nancy05 - 博客园 import logging from logging import handlers class Logger(object): level_relations = { 'debug':logging.DEBUG, 'info':logging....
  • 在服务器的使用过程中,我经常会有长时间运行的服务,那么为了方便我们查看日志,所以会产生每天都能新建一个新的日志文件的需求,其实这个问题很简单,只需要使用python的logging库的handlers模块的...
  • python日志动态收集

    2021-03-27 18:50:32
    项目进行时遇到了一个问题,需要将生成日志按照项目类别输出到不同的目录下,具体解决方案如下: 1. 日志各式 日志的格式选择标准字典,default的级别设置为DEBUG,warn为WARN,error为ERROR。写文件的handler类为’...
  • Python生成

    2021-03-06 17:31:21
    本篇文章帮大家学习python生成器,包含了Python生成器使用方法、操作技巧、实例演示和注意事项,有一定的学习价值,大家可以用来参考。在本文中,将学习如何使用Python生成器来创建迭代,了解它与迭代器和常规函数有...
  • {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台;社区覆盖了云计算、大数据、人工智能、...
  • pytest之生成日志文件

    2021-04-23 22:07:11
    设置pytest.ini文件 addopts = -vs --auulredir ./temp ; testpaths = /Users/dongshuai/PycharmProjects/interface python_files = test* Test* python_classes = test* Test* python_functions = test* Test* ;...
  • 日志 日志是跟踪软件运行时所发生的事件的一种方法。软件开发者在代码中调用日志函数,表明发生了特定的事件。事件由描述性消息描述,该描述性消息可以可选地包含可变数据(即,对于事件的每次出现都潜在地不同的...
  • pass # 将下面这句放在所有想输出到文本文档的 print 函数之前 sys.stdout = Logger('net_check.txt') or python3 main.py > output.txt ################################################################### ...
  •  可以作为一个记录日志的小脚本 在当前目录生成logt.txt 文件 效果如下: 2018/07/18 18:36:46 hello world! 2018/07/18 18:37:00 life is short, you need python! 2018/07/18 18:37:02 log.py 2018/07/18 18:...
  • 本文实例讲述了python根据文件大小打log日志的方法,分享给大家供大家参考。具体方法如下:import globimport loggingimport logging.handlerslog_filename='logging_rotatingfile_example.out'# set up a specific ...
  • 网关服务器如何生成日志文件 内容精选换一换用户无法查询到弹性云服务器私网IP地址信息。本问题请按照以下思路进行排查处理。查看DHCP是否为启用状态检查是否存在dhclient进程检查弹性云服务器日志检查子网的DHCP...
  • 借助 TimedRotatingFileHandler 可以按日期自动分割日志,自动保留日志文件数量等,下面是对日志的一个简单封装和测试。import loggingimport osfrom logging import handlersclass Logger(object):# 日志级别关系...
  • 策略:后台运行程序,然后把打印信息保存在指定的文件中,等程序运行结束后,再检查输出日志或者实时观察日志。 1、启动命令: 1、一般使用 nohup python -u Job.py > log.log 2>&1 & 2、只...
  • 项目的一个需求是解析nginx的日志文件。简单的整理如下:日志规则描述首先要明确自己的Nginx的日志格式,这里采用默认Nginx日志格式:log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$...
  • 1. 背景在深度学习的任务中,通常需要比较长...但如果是你需要远程观察模型表现,那一个时刻记录的log 文件就非常重要。(如果你希望不在实验室,远程通过访问正在训练网络的服务器的Jupyter Notebook ,实时查看实...
  • python使用pyinstaller将py文件打包成exe文件后执行shell命令会闪现黑窗口 1、pyinstaller打包程序:https://blog.csdn.net/weixin_46089319/article/details/108174853(感谢) 2、os.system、os.popen、subprocess...
  • 1、logging模块日志级别使用logging模块简单示例:>>>import logging>>>logging.debug("this's a test logging")>>>loggin.info("still a test logging")# 默认情况下以上两行没有输出,...
  • 日志类型,每天会生成一个,里面有6个字段: 第一个字段是时间,但是只有时分秒(xx:xx:xx) 第二个字段和第三个字段还有第五个字段只是个简单的数字id 第四个字段是名称 第六个字段是注释,写的比较多字段较长 ...
  • 用于便捷记录日志且线程安全的模块1、日志级别日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICAL。DEBUG:详细的信息,通常只出现在诊断问题上INFO:确认一切按预期运行WARNING:一个迹象表明...
  • ···logger.pydef log_settings(logging_path=None):import logging.configimport logging.handlersif logging_path is None:logging_path = os.getenv('WORKSPACE', os.curdir)···Python 自动化测试项目在本地...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 95,555
精华内容 38,222
关键字:

python生成日志文件

python 订阅
友情链接: phpMyAdmin-2.11.zip