Python logging module

Source: Internet
Author: User

1. Simply print the log to the screen

import logging

logging.debug(‘This is debug message‘)
logging.info(‘This is info message‘)
logging.warning(‘This is warning message‘)

屏幕上打印:
WARNING:root:This is warning message

By default, logging prints the log to the screen with a log level of warning;
Log level size relationships are: CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET, and of course you can define the log level yourself.

2. Configure the output format and mode of the log by Logging.basicconfig function

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‘,
                filename=‘myapp.log‘,
                filemode=‘w‘)
    
logging.debug(‘This is debug message‘)
logging.info(‘This is info message‘)
logging.warning(‘This is warning message‘)

./myapp.log文件中内容为:
Sun, 24 May 2009 21:48:54 demo2.py[line:11] DEBUG This is debug message
Sun, 24 May 2009 21:48:54 demo2.py[line:12] INFO This is info message
Sun, 24 May 2009 21:48:54 demo2.py[line:13] WARNING This is warning message

Parameters of the Logging.basicconfig function:
FileName: Specify the log file name
FileMode: Same as file function, specify open mode of log file, ' W ' or ' a '
Format: Specifies the formats and contents of the output, format can output a lot of useful information, as in the example above:
% (Levelno) S: Print the value of the log level
% (levelname) S: Print log level name
% (pathname) s: Prints the path of the currently executing program, which is actually sys.argv[0]
% (filename) s: Prints the current name of the executing program
% (funcName) s: Print the current function of the log
% (Lineno) d: Print the current line number of the log
% (asctime) s: Time to print logs
% (thread) d: Print thread ID
% (threadname) s: Print thread name
% (process) d: Print process ID
% (message) s: Print log information
DATEFMT: Specify time format, same as Time.strftime ()
Level: Sets the log levels by default to logging. WARNING
Stream: Specifies the output stream that will log, can specify output to Sys.stderr,sys.stdout or file, default output to Sys.stderr, stream is ignored when stream and filename are specified simultaneously

3. Output logs to both file and screen at the same time

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 ',
Filename= ' Myapp.log ',
Filemode= ' W ')

#################################################################################################
#定义一个StreamHandler, print Info-level or higher log information to a standard error and add it to the current log-processing object #
console = logging. Streamhandler ()
Console.setlevel (Logging.info)
Formatter = logging. Formatter ('% (name) -12s:% (levelname) -8s% (message) s ')
Console.setformatter (Formatter)
Logging.getlogger ("). AddHandler (console)
#################################################################################################

Logging.debug (' This is Debug message ')
Logging.info (' This is Info message ')
Logging.warning (' This is warning message ')

屏幕上打印:
root        : INFO     This is info message
root        : WARNING  This is warning message

./myapp.log文件中内容为:
Sun, 24 May 2009 21:48:54 demo2.py[line:11] DEBUG This is debug message
Sun, 24 May 2009 21:48:54 demo2.py[line:12] INFO This is info message
Sun, 24 May 2009 21:48:54 demo2.py[line:13] WARNING This is warning message

4.logging Log Rollback

import logging
from logging.handlers import RotatingFileHandler

#################################################################################################
#定义一个RotatingFileHandler,最多备份5个日志文件,每个日志文件最大10M
Rthandler = RotatingFileHandler(‘myapp.log‘, maxBytes=10*1024*1024,backupCount=5)
Rthandler.setLevel(logging.INFO)
formatter = logging.Formatter(‘%(name)-12s: %(levelname)-8s %(message)s‘)
Rthandler.setFormatter(formatter)
logging.getLogger(‘‘).addHandler(Rthandler)
################################################################################################

As can be seen from the above example and in this example, logging has a main object of log processing, and other processing methods are added through AddHandler.
Several handle methods of logging are as follows:

Logging. Streamhandler: Log output to stream, can be sys.stderr, sys.stdout, or file
Logging. Filehandler: Log output to File

Log rollback method, using Rotatingfilehandler and Timedrotatingfilehandler when actually used
Logging.handlers.BaseRotatingHandler
Logging.handlers.RotatingFileHandler
Logging.handlers.TimedRotatingFileHandler

Logging.handlers.SocketHandler: Remote output log to TCP/IP sockets
Logging.handlers.DatagramHandler: Remote output log to UDP sockets
Logging.handlers.SMTPHandler: Remote output log to e-mail address
Logging.handlers.SysLogHandler: Log Output to Syslog
Logging.handlers.NTEventLogHandler: Remote output log to Windows NT/2000/XP event log
Logging.handlers.MemoryHandler: Log output to in-memory development buffer
Logging.handlers.HTTPHandler: Remote output to HTTP server via "GET" or "POST"

Because Streamhandler and filehandler are common log processing methods, they are included directly in the logging module, while others are included in the Logging.handlers module.
Please refer to the python2.5 manual for the use of the other processing methods described above.

5. Configuring logs via the Logging.config module

#logger.conf

###############################################

[loggers]
keys=root,example01,example02

[logger_root]
level=DEBUG
handlers=hand01,hand02

[logger_example01]
handlers=hand01,hand02
qualname=example01
propagate=0

[logger_example02]
handlers=hand01,hand03
qualname=example02
propagate=0

###############################################

[handlers]
keys=hand01,hand02,hand03

[handler_hand01]
class=StreamHandler
level=INFO
formatter=form02
args=(sys.stderr,)

[handler_hand02]
class=FileHandler
level=DEBUG
formatter=form01
args=(‘myapp.log‘, ‘a‘)

[handler_hand03]
class=handlers.RotatingFileHandler
level=INFO
formatter=form02
args=(‘myapp.log‘, ‘a‘, 10*1024*1024, 5)

###############################################

[formatters]
keys=form01,form02

[formatter_form01]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
datefmt=%a, %d %b %Y %H:%M:%S

[formatter_form02]
format=%(name)-12s: %(levelname)-8s %(message)s
datefmt=

In Example 3:

import logging
import logging.config

logging.config.fileConfig("logger.conf")
logger = logging.getLogger("example01")

logger.debug(‘This is debug message‘)
logger.info(‘This is info message‘)
logger.warning(‘This is warning message‘)

In Example 4:

import logging
import logging.config

logging.config.fileConfig("logger.conf")
logger = logging.getLogger("example02")

logger.debug(‘This is debug message‘)
logger.info(‘This is info message‘)
logger.warning(‘This is warning message‘)

6.logging is thread-safe

from:http://blog.csdn.net/yatere/article/details/6655445

7. Logging Module

Shoot the table! Logging is very important, to tidy up. Melted down re-learning

Logging logs can be divided into,,, and debug() info() warning() error()critical() 5个级别

The simplest usage

1234567891011 import  logging Code class= "Python Plain" >logging.debug ( ' Debug ... ' ) logging.info ( logging.warning ( ' warning .... ' ) Logging.critical ( "server is down"  # output warning:root:warning .... critical:root:server  is  down   # can be obtained, the default log level is warning

You can set the log level, log file path, and so on in logging.

12345678 importlogging# 在设置level时,可以指定日志级别的关键字,也可以指定日志的数字级别,这里的logging.INFO指定的就是数字级别为20,也可以直接输入20logging.basicConfig(filename=‘test.log‘,level=logging.INFO)logging.debug(‘debug ....‘)logging.info(‘info ....‘)logging.warning(‘warning ....‘)logging.critical("server is down")

The Logging.basicconfig functions each parameter:

FileName: Specify the log file name
FileMode: Same as file function, specify open mode of log file, ' W ' or ' a '
Format: Specifies the formats and contents of the output, format can output a lot of useful information, as shown in:

DATEFMT: Specify time format, same as Time.strftime ()
Level: Sets the log levels by default to logging. WARNING
Stream: Specifies the output stream that will log, can specify output to Sys.stderr,sys.stdout or file, default output to Sys.stderr, stream is ignored when stream and filename are specified simultaneously

Log format

% (name) s

Logger's name.

% (Levelno) s

Log level in digital form

% (LevelName) s

Log level in text form

% (pathname) s

The full path name of the module that called the log output function may not have

% (filename) s

The file name of the module that called the log output function

% (module) s

Call the module name of the log output function

% (FuncName) s

Function name of the call log output function

% (Lineno) d

The line of code where the statement that called the log output function is located

% (created) f

Current time, represented by the UNIX standard floating-point number representing the time

% (relativecreated) d

The number of milliseconds since logger was created when the log information is output

% (Asctime) s

The current time in string form. The default format is "2003-07-08 16:49:45,896". The comma is followed by milliseconds

% (thread) d

The thread ID. Probably not.

% (ThreadName) s

The name of the thread. Probably not.

% (process) d

The process ID. Probably not.

% (message) s

User-Output messages

For more flexible control of logging it is necessary to understand the concept of logger,handler,formatter,filter

Logging.debug (), Logging.info (), logging.warning (), Logging.error (), logging.critical () (for logging different levels of log information, respectively)

Logging.basicconfig () (using the default log format (Formatter) to establish a default stream processor (Streamhandler) for the logging system, set the underlying configuration (such as log level, etc.) and add it to root Logger (Root logger) These several logging module-level functions

There is also a module-level function that is Logging.getlogger ([name]) (Returns a Logger object if no name specified will return root logger)

Let's use GetLogger to see how to output the log information.

Use

Python logging module

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.