• logging 日志两种使用方法(转)


               下面我们使用代码logging的代码来说明:

       使用baseConfig()函数对 logging进行 简单的 配置:

    Python代码 
    1. import logging;  
    2.   
    3. # 使用baseConfig()函数,可选参数有filename,filemode,format,datefmt,level,stream  
    4. # 有filename是文件日志输出,filemode是'w'的话,文件会被覆盖之前生成的文件会被覆盖。datafmt参数用于格式化日期的输出  
    5. logging.basicConfig(filename="config.log",filemode="w",format="%(asctime)s-%(name)s-%(levelname)s-%(message)s",level=logging.INFO);  
    6. # 使用logging输出日志信息  
    7. logging.debug("debug");  
    8. logging.info("info");  
    9. logging.warning("warning");  
    10. logging.error("error");  
    11. logging.critical("critiacl");  
    12.  

       通过初始化logger,handler,formater来配置logging:

    Python代码  
    1. import logging;  
    2.   
    3. # logging模块由logger,handler,filter,fomatter四个部分组成  
    4.   
    5. # 获取一个logger对象  
    6. logger = logging.getLogger("haha");  
    7. # 设置日志输出等级  
    8. logger.setLevel(logging.DEBUG);  
    9. # 创建一个文件的handler  
    10. f_handler = logging.FileHandler("xxx.log");  
    11. f_handler.setLevel(logging.INFO);  
    12. # 创建一个控制台的handler  
    13. c_handler = logging.StreamHandler();  
    14. c_handler.setLevel(logging.WARNING);  
    15. # 设置日志的输出格式  
    16. fmt = logging.Formatter("%(asctime)s-%(name)s-%(levelname)s-%(message)s");  
    17. # 给handler绑定一个fomatter类  
    18. f_handler.setFormatter(fmt);  
    19. c_handler.setFormatter(fmt);  
    20. # 绑定一个handler  
    21. logger.addHandler(f_handler);  
    22. logger.addHandler(c_handler);  
    23.   
    24. # 使用logger输出日志信息  
    25. logger.debug("debug");  
    26. logger.info("info");  
    27. logger.warning("warning");  
    28. logger.error("error");  
    29. logger.critical("critiacl");  

       使用配置文件实现logging的配置:

    Python代码  收藏代码
    1. import logging  
    2. import logging.config  
    3.   
    4. # 使用配置文件配置logging  
    5. logging.config.fileConfig("config.conf");  
    6. logger = logging.getLogger("simpleExample");  
    7.   
    8. # 使用logger  
    9. logger.debug("debug");  
    10. logger.info("info");  
    11. logger.warning("warning");  
    12. logger.error("error");  
    13. logger.critical("critiacl");  

        与之对应的配置文件内容如下:

    Python代码  收藏代码
    1. [loggers]  
    2. keys=root,simpleExample  
    3.   
    4. [handlers]  
    5. keys=consoleHandler,fileHandler  
    6.   
    7. [formatters]  
    8. keys=simpleFormatter  
    9.   
    10. [logger_root]  
    11. level=DEBUG  
    12. handlers=consoleHandler  
    13.   
    14. [logger_simpleExample]  
    15. level=DEBUG  
    16. handlers=consoleHandler,fileHandler  
    17. qualname=simpleExample  
    18. propagate=0  
    19.   
    20. [handler_consoleHandler]  
    21. class=StreamHandler  
    22. level=DEBUG  
    23. formatter=simpleFormatter  
    24. args=(sys.stdout,)  
    25.   
    26. [handler_fileHandler]  
    27. class=FileHandler  
    28. level=WARNING  
    29. formatter=simpleFormatter  
    30. args=("file_config_log.log", "a")  
    31.   
    32. [formatter_simpleFormatter]  
    33. format=%(asctime)s - %(name)s - %(levelname)s - %(message)s  
    34. datefmt=  

           上面的配置文件中:由[loggers],[handlers],[formaters] 信息,keys对应实例化是他们的名称,多个用逗号隔开。然后再分别配置各个logger,handler,formaters。以logger为例,logger下有root和simpleExample两个logger,就要配置[logger_root]和[logger_simpleExample];类似的,handler和formater也是这样。

          在[logger_name] 中的参数purlname ,是设置logging.getLoger(name)中的name值;propagete参数 :propagete=0,表示输出日志,但消息不传递;propagate=1是输出日志,同时消息往更高级别的地方传递。若上面配置文件参数progagate=1,simpleExample的更高级logger有root,输出的结果会是:

    Python代码  收藏代码
    1. 2012-08-06 23:07:18,483 - simpleExample - DEBUG - debug  
    2. 2012-08-06 23:07:18,483 - simpleExample - DEBUG - debug  
    3. 2012-08-06 23:07:18,483 - simpleExample - INFO - info  
    4. 2012-08-06 23:07:18,483 - simpleExample - INFO - info  
    5. 2012-08-06 23:07:18,483 - simpleExample - WARNING - warning  
    6. 2012-08-06 23:07:18,483 - simpleExample - WARNING - warning  
    7. 2012-08-06 23:07:18,483 - simpleExample - ERROR - error  
    8. 2012-08-06 23:07:18,483 - simpleExample - ERROR - error  
    9. 2012-08-06 23:07:18,483 - simpleExample - CRITICAL - critiacl  
    10. 2012-08-06 23:07:18,483 - simpleExample - CRITICAL - critiacl  

          最后是 [hander_name] 配置下的args参数,其实就是你使用的handler类型的初始化函数的参数

  • 相关阅读:
    2017-5-25 母版页
    2017-5-25 分页加条件查询合体
    2017-5-23 WebForm 中的分页功能和条件查询功能
    2017-5-17 WebForm 基础
    2017-5-14 心情
    2017-5-10 小型人员管理系统
    2017-5-9 打开唯一窗体的实例操作
    2017-5-8 TreeView 实现三级联动 (递归方法)
    2017-5-7 三级联动数据库 数据保存
    2017-5-7 三级联动
  • 原文地址:https://www.cnblogs.com/yoyo008/p/9239131.html
Copyright © 2020-2023  润新知