爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5333|回复: 0

[经验总结] python运行过程中信息输出到日志文件

[复制链接]

新浪微博达人勋

发表于 2022-3-21 12:11:45 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

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模块的基础信息网上有很多介绍了,在这里就不在赘述了。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表