- 积分
- 8759
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-4-19
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在用pyinstaller打包python成exe文件运行后,经常出现一些错误信息,如果只是输出在窗口的话,会出现窗口一闪而过,无法记录下必要信息。同时除了错误信息,还有一些必要输出信息,比如处理到第几个文件之类的,也是想要看到的,因此最好需要输出到一个日志文件里记录下来。为这个问题折腾了几天,上网查了不少资料,终于解决了,在此记录一下。先放一段最后解决的代码:
import logging
import traceback
import datetime
#日志同时输出到屏幕和文件
logger = logging.getLogger()
logger.setLevel(level=logging.INFO)
logfile = 'test.log'
#设置输入到文件里的属性
handler = logging.FileHandler(logfile, mode='a')
handler.setLevel(logging.INFO)
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
#设置输入到屏幕上的属性
console = logging.StreamHandler()
console.setLevel(logging.WARNING)
logger.addHandler(console)
try:
#确定起报时间
now_time = datetime.datetime.now()
yy=str(now_time)[0:4]
mm=str(now_time)[5:7]
dd=str(now_time)[8:10]
#起报时间可选当天00/12UTC、前一天12UTC
initial1=str(yy)+str(mm)+str(dd)+'12'
initial2=str(yy)+str(mm)+str(dd)+'00'
time=now_time-datetime.timedelta(hours=24)
yy=str(time)[0:4]
mm=str(time)[5:7]
dd=str(time)[8:10]
initial3=str(yy)+str(mm)+str(dd)+'12'
#判断文件夹下是否存在数据
file_dir1 =glob.glob(ec_eps_dir+initial1+'\\pf*.nc')
file_dir2 =glob.glob(ec_eps_dir+initial2+'\\pf*.nc')
file_dir3 =glob.glob(ec_eps_dir+initial3+'\\pf*.nc')
#先判断当天12UTC起报文件是否存在,再判断当天00UTC起报
#最后判断前一天12UTC起报,都不存在说明数据有缺失
if (file_dir1!=[]):
initial=initial1
elif (file_dir2!=[]):
initial=initial2
elif (file_dir3!=[]):
initial=initial3
else:
logging.warning('!!----path is not correct or data not exist----!!')
except:
s = traceback.format_exc()
logging.error(s)
中间代码还有很长就不放了,核心思路就是把原先用print输出想要的信息,现在要用Logging.info或者 logging.warning来输出,就能输入到日志文件里了。至于logging模块的基础信息网上有很多介绍了,在这里就不在赘述了。
|
|