python learning-logging module

logging module

  • Role: Provide a flexible means for applications to record time errors, warnings and debugging information. Simply put, it provides a differentiated level of application execution log files for the running process of the entire application .
  • Instructions:
    • import logging
    • The basic configuration of the entire module (object): logging.basicConfig()
    • Create a logger object:
      • 创建:logger = logging.getLogger(name)
      • Naming convention: The name should be the name of the application as much as possible
      • Send log messages to the console :
        • logger.info(“Start print log”)
        • logger.debug(“Do something”)
        • logger.warning(“Something maybe fail.”)
        • logger.error(“Finish”)
        • logger.critical(‘hah’)
    • Filter for log messages
      • logger.setLevel(level): level setting
      • logger.isEnabledFor(level): Determine whether to process messages of this level
      • Add filter, remove filter; object filter, the built-in filter is Filter (custom filter can be inherited by class).
      • Hierarchical recorder and message propagation control (default propagation)
    • Log message processor
      • Built-in processor module: see the link below for details
      • Processor configuration: level setting, adding and removing processors
      • Cleanup and shutdown of the processor
    • Formatting of log messages
      • Create Formatter object
      • Add the object to the processor
      • Add the processor to the message log
    • How to add contextual additional information
      • Automatically add extra= () after the message of sending log method
      • Use logAdapter wrapper. It is recommended to add this method flexibly and automatically
    • Utility function
      • Look at the key connection:

Code

'''
logging模块作用:为应用程序提供灵活的手段记录事件、错误、警告、调试信息;
对信息进行收集、筛选、写入文件,发送系统日志,甚至可以同步发送给远程计算机
'''

'''
日志记录级别:
CRUTICAL、ERROR、WARNING、INFO、DEBUG、NOTSET
'''

# 网上案列____发出日志消息
import logging
# 基本配置语句
logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
#
logger = logging.getLogger('a')
logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")




# 案列1___发出日志消息
import Hello
import logging
# 下面语句为特殊对象基本配置语句,接受关键字参数,根记录器。具体参数见书P287
logging.basicConfig(
    filename= 'app.log',
    format= '%(levelname)-10s %(asctime)s %(message)s',
    level= logging.INFO
)
log = logging.getLogger('app')
# 关键字对,字典插入尝试
parms = {
    
    
    'host' : 'www.python.org',
    'port' : 80
}
log.critical("Can't connect to %(host)s at port %(port)d", parms)
'''
其它发送日志信息的方法:看书
log.exception()
log.log()
log.findCaller()
'''
# 得到一个logger对象
logger = logging.getLogger(__name__)
# 设置logger内置对象级别
logger.setLevel(level = logging.INFO)
# 调用内置处理器,将消息日志写入文件,只有处理器不能运行
handler = logging.FileHandler("app.log")
# 为处理器设置日志消息级别
handler.setLevel(logging.INFO)
# 日志消息格式化信息
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 设置处理器格式化信息
handler.setFormatter(formatter)
# 为对象增加处理器
logger.addHandler(handler)

logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")




logger = logging.getLogger(__name__)
logger.setLevel(level = logging.INFO)
handler = logging.FileHandler("log.txt")
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)

console = logging.StreamHandler()
console.setLevel(logging.INFO)

logger.addHandler(handler)
logger.addHandler(console)

logger.info("Start print log2")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")




from logging.handlers import RotatingFileHandler
logger = logging.getLogger(__name__)
logger.setLevel(level = logging.INFO)
#定义一个RotatingFileHandler,最多备份3个日志文件,每个日志文件最大1K
rHandler = RotatingFileHandler("rp.txt",maxBytes = 1*1024,backupCount = 3)
rHandler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
rHandler.setFormatter(formatter)

console = logging.StreamHandler()
console.setLevel(logging.INFO)
console.setFormatter(formatter)

logger.addHandler(rHandler)
logger.addHandler(console)

logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")

Console record

Insert picture description here

File manager records

Insert picture description here

Learning gains

Master the creation of message log objects, message log message file formatting, filters, and processors. One of the applications and the exception handling mechanism jointly complete the console prompt: the red message prompt section in pycharm.

In-depth study of logging links:

Find a few big bloggers who learn python and deep learning:

Guess you like

Origin blog.csdn.net/Chaoyuan_Jam/article/details/82896263