logging模塊
标准输出流
sys.stdout.write('123\n')
sys.stdout.write('呵呵\n')
print('嘻嘻', end='')
print('嘿嘿', end='')
print()
标准错误流
sys.stderr.write('111111111111111111111111111111111111111111111111111\n')
sys.stderr.write('222222222222222222222222222222222222222222222222222\n')
sys.stderr.write('333333333333333333333333333333333333333333333333333\n')
标准输入流
print(sys.stdin)
res = sys.stdin.read(3)
print(res)
res = input()
print(res)
res = sys.stdin.readline()
print(res)
logging配置:格式化输出 1)输出的方式 2)输出的格式 3)输出的位置
h1 = logging.StreamHandler()
h2 = logging.FileHandler('d.log')
logging.basicConfig(
# filename='my.log',
# filemode='w',
# stream=sys.stderr, # 往控制台打印采用具体的输出流
format='%(asctime)s [%(levelname)s]- %(name)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
level=logging.DEBUG, # 10, 代表DEBUG及DEBUG级别以上都能输出
handlers=[h1, h2]
)
logging.debug("debug")
logging.info("info")
logging.warning("warning")
logging.error("error")
logging.critical("critical")
1.新建打印者 logger = logging.getLogger("Owen") # 2.创建句柄:输出的位置 stream_handler = logging.StreamHandler() a_file_handler = logging.FileHandler('a.log') b_file_handler = logging.FileHandler('b.log') # 3.打印者绑定句柄 logger.addHandler(stream_handler) logger.addHandler(a_file_handler) logger.addHandler(b_file_handler) # 4.设置格式 fmt1 = logging.Formatter('%(asctime)s - %(msg)s') fmt2 = logging.Formatter('%(asctime)s [%(name)s] - %(msg)s') # 5.为句柄绑定输出格式 stream_handler.setFormatter(fmt1) a_file_handler.setFormatter(fmt1) b_file_handler.setFormatter(fmt2) logger.critical('msg')
import logging # 1.创建logger log1 = logging.getLogger('Owen') log2 = logging.getLogger('Zero') r_log = logging # 2.logger设置级别 log1.setLevel(logging.DEBUG) # 3.设置句柄 h1 = logging.StreamHandler() # 4.设置句柄级别: # 1)系统句柄默认级别warning, # 2)自定义的句柄级别默认同logger,也可以在logger基础上在加以限制 h1.setLevel(logging.DEBUG) # 5.logger添加句柄 log1.addHandler(h1) # log1可以打印DEBUG以上的信息,但往不同位置打印,采用不同句柄的二次级别限制 h2 = logging.FileHandler('c.log') h2.setLevel(logging.WARNING) log1.addHandler(h2) log1.debug('debug') log1.info('info') log1.warning('warning') log1.error('error') log1.critical('critical')
import logging
# 1.创建logger
log1 = logging.getLogger('one')
log2 = logging.getLogger('Zero')
r_log = logging
# 2.logger设置级别
log1.setLevel(logging.DEBUG)
# 3.设置句柄
h1 = logging.StreamHandler()
# 4.设置句柄级别:
# 1)系统句柄默认级别warning,
# 2)自定义的句柄级别默认同logger,也可以在logger基础上在加以限制
h1.setLevel(logging.DEBUG)
# log1可以打印DEBUG以上的信息,但往不同位置打印,采用不同句柄的二次级别限制
h2 = logging.FileHandler('c.log')
h2.setLevel(logging.WARNING)
log1.addHandler(h2)
LOGGING_DIC = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'o_fmt1': {
'format': '%(name)s:%(asctime)s - %(message)s'
},
'o_fmt2': {
'format': '%(name)s:%(asctime)s [%(levelname)s] - %(message)s'
}
},
'filters': {},
'handlers': {
'o_cmd': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'o_fmt1'
},
'o_file': {
'level': 'WARNING',
'class': 'logging.handlers.RotatingFileHandler',
'formatter': 'o_fmt2',
'filename': ‘’, # 日志文件
'maxBytes': 1024*1024*5, # 日志大小 5M
'backupCount': 5, #日志文件最大个数
'encoding': 'utf-8', # 日志文件的编码
}
},
'loggers': {
'o_one': {
'level': 'DEBUG',
'handlers': ['o_cmd', 'o_file']
},
'o_zero': {
'level': 'DEBUG',
'handlers': ['o_file']
}
}
}
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'o_fmt1': {
'format': '%(name)s:%(asctime)s - %(message)s'
},
'o_fmt2': {
'format': '%(name)s:%(asctime)s [%(levelname)s] - %(message)s'
}
},
'filters': {},
'handlers': {
'o_cmd': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'o_fmt1'
},
'o_file': {
'level': 'WARNING',
'class': 'logging.handlers.RotatingFileHandler',
'formatter': 'o_fmt2',
'filename': ‘’, # 日志文件
'maxBytes': 1024*1024*5, # 日志大小 5M
'backupCount': 5, #日志文件最大个数
'encoding': 'utf-8', # 日志文件的编码
}
},
'loggers': {
'o_one': {
'level': 'DEBUG',
'handlers': ['o_cmd', 'o_file']
},
'o_zero': {
'level': 'DEBUG',
'handlers': ['o_file']
}
}
}
# 2.加载配置
import logging.config
logging.config.dictConfig(LOGGING_DIC)
import logging.config
logging.config.dictConfig(LOGGING_DIC)
# 3.使用
log = logging.getLogger('o_owen')
log.warning('123')