版本一
import logging
logger = logging.getLogger()
fh = logging.FileHandler('test.log',mode="a",encoding='utf-8')
ch = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(name)s - %(filename)s - [line:%(lineno)d] - %(levelname)s - %(message)s')
logger.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
ch.setFormatter(formatter)
logger.addHandler(fh)
logger.addHandler(ch)
logger.debug('logger debug message')
logger.info('logger info message')
logger.warning('logger warning message')
logger.error('logger error message')
logger.critical('logger critical message')
版本二
import os
import logging.config
standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \
'[%(levelname)s][%(message)s]'
simple_format = '在 %(asctime)s %(message)s'
id_simple_format = '[%(levelname)s][%(asctime)s] %(message)s'
logfile_path = 'all2.log'
LOGGING_DIC = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'standard': {
'format': standard_format
},
'simple': {
'format': simple_format
},
},
'filters': {},
'handlers': {
'stream': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'file': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'formatter': 'standard',
'filename': None,
'maxBytes': 1024*1024*1024,
'backupCount': 5,
'encoding': 'utf-8',
},
},
'loggers': {
'': {
'handlers': ['stream', 'file'],
'level': 'DEBUG',
'propagate': True,
},
},
}
def get_logger():
path = r'F:\s24\day21\liye.log'
LOGGING_DIC['handlers']['file']['filename'] = path
logging.config.dictConfig(LOGGING_DIC)
logger = logging.getLogger(__name__)
return logger
def save():
logger = get_logger()
logger.info(f'{} 存入300元')
save()