python日志输出—logging配置文件

一、logging直接写在代码中

      >>>http://blog.csdn.net/naiveloafer/article/details/7630673

二、通过配置文件来配置输出

配置文件:

  1. <span style="font-size: 18px;">#Configuration for log output 
  2. #Naiveloafer 
  3. #2012-06-04 
  4.  
  5. [loggers] 
  6. keys=root,xzs 
  7.  
  8. [handlers] 
  9. keys=consoleHandler,fileHandler,rotatingFileHandler 
  10.  
  11. [formatters] 
  12. keys=simpleFmt 
  13.  
  14. [logger_root] 
  15. level=DEBUG 
  16. #handlers=consoleHandler 
  17. #handlers=fileHandler 
  18. handlers=rotatingFileHandler 
  19.  
  20. [logger_xzs] 
  21. level=DEBUG 
  22. handlers=rotatingFileHandler 
  23. qualname=xzs 
  24. propagate=0 
  25.  
  26. [handler_consoleHandler] 
  27. class=StreamHandler 
  28. level=DEBUG 
  29. formatter=simpleFmt 
  30. args=(sys.stdout,) 
  31.  
  32. [handler_fileHandler] 
  33. class=FileHandler 
  34. level=DEBUG 
  35. formatter=simpleFmt 
  36. args=("../log/p2pplayer.log", "a") 
  37.  
  38. [handler_rotatingFileHandler] 
  39. class=handlers.RotatingFileHandler 
  40. level=DEBUG 
  41. formatter=simpleFmt 
  42. args=("../log/p2pplayer.log", "a", 20*1024*1024, 10) 
  43.  
  44.  
  45. [formatter_simpleFmt] 
  46. format=%(asctime)s - %(name)s - %(levelname)s - %(message)s - [%(filename)s:%(lineno)s] 
  47. datefmt=</span> 
#Configuration for log output
#Naiveloafer
#2012-06-04

[loggers]
keys=root,xzs

[handlers]
keys=consoleHandler,fileHandler,rotatingFileHandler

[formatters]
keys=simpleFmt

[logger_root]
level=DEBUG
#handlers=consoleHandler
#handlers=fileHandler
handlers=rotatingFileHandler

[logger_xzs]
level=DEBUG
handlers=rotatingFileHandler
qualname=xzs
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFmt
args=(sys.stdout,)

[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=simpleFmt
args=("../log/p2pplayer.log", "a")

[handler_rotatingFileHandler]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=simpleFmt
args=("../log/p2pplayer.log", "a", 20*1024*1024, 10)


[formatter_simpleFmt]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s - [%(filename)s:%(lineno)s]
datefmt=

测试代码:

  1. <span style="font-size: 18px;">def log_test02(): 
  2.     import logging 
  3.     import logging.config 
  4.     CONF_LOG = "../conf/p2pplayer_logging.conf" 
  5.     logging.config.fileConfig(CONF_LOG);    # 采用配置文件 
  6.     logger = logging.getLogger("xzs"
  7.     logger.debug("Hello xzs"
  8.      
  9.     logger = logging.getLogger() 
  10.     logger.info("Hello root"
  11.      
  12. if __name__ == "__main__"
  13.     log_test02()</span> 
def log_test02():
    import logging
    import logging.config
    CONF_LOG = "../conf/p2pplayer_logging.conf"
    logging.config.fileConfig(CONF_LOG);    # 采用配置文件
    logger = logging.getLogger("xzs")
    logger.debug("Hello xzs")
    
    logger = logging.getLogger()
    logger.info("Hello root")
    
if __name__ == "__main__":
    log_test02()

输出:

  1. <span style="font-size: 18px;">2012-06-04 15:28:05,751 - xzs - DEBUG - Hello xzs - [xlog.py:29] 
  2. 2012-06-04 15:28:05,751 - root - INFO - Hello root - [xlog.py:32]</span> 
2012-06-04 15:28:05,751 - xzs - DEBUG - Hello xzs - [xlog.py:29]
2012-06-04 15:28:05,751 - root - INFO - Hello root - [xlog.py:32]

具体就不详细说明了,总之是能够运行的,这个文件配置搞了我两天时间。

特别是class=XXXX要注意!!!


关于formatter的配置,采用的是%(<dict key>)s的形式,就是字典的关键字替换。提供的关键字包括:

Format Description
%(name)s Name of the logger (logging channel).
%(levelno)s Numeric logging level for the message (DEBUG, INFO, WARNING, ERROR, CRITICAL).
%(levelname)s Text logging level for the message ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL').
%(pathname)s Full pathname of the source file where the logging call was issued (if available).
%(filename)s Filename portion of pathname.
%(module)s Module (name portion of filename).
%(funcName)s Name of function containing the logging call.
%(lineno)d Source line number where the logging call was issued (if available).
%(created)f Time when the LogRecord was created (as returned by time.time()).
%(relativeCreated)d Time in milliseconds when the LogRecord was created, relative to the time the logging module was loaded.
%(asctime)s Human-readable time when the LogRecord was created. By default this is of the form “2003-07-08 16:49:45,896” (the numbers after the comma are millisecond portion of the time).
%(msecs)d Millisecond portion of the time when the LogRecord was created.
%(thread)d Thread ID (if available).
%(threadName)s Thread name (if available).
%(process)d Process ID (if available).
%(message)s The logged message, computed as msg % args.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值