关于 python logging 模块的请教~

2016-08-22 15:57:00 +08:00
 slysly759

没错很傻比我又来问问题啦~

目前写的一个小工具是将 excel 杂乱的数据处理后导入到 oracle ,刚刚该 PM 装了环境在测 发现报错,然后排查是中文编码问题,现在 PM 要求 将那些运行的 print 和错误都要记录到 log 里面方便日后排查。 本人是 python 的小菜鸟,廖雪峰的 [错误处理] 一章仅仅讲了一个 try except 但是我咋知道那些 except 呢 网络上其他的 log 都只是说了 log 的几种类型 0.0 我需要记录所有可能的返回错误信息啊 然后程序有 print 可否一起 log 不想在 print 后面傻逼的跟上 xxx.log()还请高人指点一二~

Thx in advance.

Any advice would be appreciated.

2966 次点击
所在节点    Python
14 条回复
awanabe
2016-08-22 16:13:54 +08:00
说到重点的地方标点全无, 没法理解 LZ 语言的魅力, 歧义多多
爱莫能助
clino
2016-08-22 16:27:10 +08:00
意识流的狂乱表达是一种艺术来着
prefere
2016-08-22 16:28:42 +08:00
捕获异常
<pre>
except Exception,e:
print Exception,":",e
</pre>
logging 设置相应等级后,会自动输出日志,用不着 print 。
onlyice
2016-08-22 16:28:53 +08:00
按理说这种帖子应该让它沉下去。。太水了。。

> 但是我咋知道那些 except 呢
那别人又咋知道是哪些 except 呢?看看谁会抛 exception 啊

> 网络上其他的 log 都只是说了 log 的几种类型 0.0 我需要记录所有可能的返回错误信息啊
网络难道没有教你多看看文档。。 https://docs.python.org/2/howto/logging-cookbook.html
关键词: logger.exception() / logger.error('your description', exe_info=1)

> 然后程序有 print 可否一起 log 不想在 print 后面傻逼的跟上 xxx.log(
看文档。。关键词: logging.StreamHandler()
Sylv
2016-08-22 16:32:02 +08:00
samcode
2016-08-22 16:59:25 +08:00
stdout = sys.stdout
class MyWriter(object):
def __init__(self):
self.path = 'log.txt'

def write(self, s):
stdout.write(s)
open(self.path, "a").write(s+'\n')

sys.stdout = MyWriter()
slysly759
2016-08-22 17:17:07 +08:00
@prefere 不好意思有些着急了~
1. except 后面的容错处理,当我不清楚有多少的时候, log 可否打印出来呢,比如除零错误,类型错误, IOerror unicodeerror 等等,可否解决捏。
2. 我理解设置 info error 等日志等级,我很好奇这个轮子咋知道函数返回的错误等级捏,并且正确记录呢?

万分感谢你能在百忙之中抽空看我的问题~
slysly759
2016-08-22 17:20:02 +08:00
@onlyice thx 是我太着急了~ 我会好好看你给的文档的~
rale
2016-08-22 19:07:19 +08:00
当错误出现的时候,或许你还想打印调用栈的信息,建议先 from traceback import format_exc
slysly759
2016-08-22 21:38:17 +08:00
@rale thx 感谢
xiahei
2016-08-22 21:52:40 +08:00
多读书可破。
报错信息。

令,熟读 #5 楼的文章。
eloah
2016-08-22 23:00:50 +08:00
个人也觉得很神奇, log 似乎是一个静态方法,运行在整个进程(线程?)内
wyntergreg
2016-08-23 08:46:04 +08:00
logger = logging.getLogger("file.log")

except Exception:

excpt = traceback.format_exc()

# print excpt

logger.error( '...')
mckelvin
2016-08-23 13:21:02 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/300976

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX