没错很傻比我又来问问题啦~
目前写的一个小工具是将 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.
1
awanabe 2016-08-22 16:13:54 +08:00
说到重点的地方标点全无, 没法理解 LZ 语言的魅力, 歧义多多
爱莫能助 |
2
clino 2016-08-22 16:27:10 +08:00
意识流的狂乱表达是一种艺术来着
|
3
prefere 2016-08-22 16:28:42 +08:00 1
捕获异常
<pre> except Exception,e: print Exception,":",e </pre> logging 设置相应等级后,会自动输出日志,用不着 print 。 |
4
onlyice 2016-08-22 16:28:53 +08:00 2
按理说这种帖子应该让它沉下去。。太水了。。
> 但是我咋知道那些 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() |
5
Sylv 2016-08-22 16:32:02 +08:00
|
6
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() |
7
slysly759 OP @prefere 不好意思有些着急了~
1. except 后面的容错处理,当我不清楚有多少的时候, log 可否打印出来呢,比如除零错误,类型错误, IOerror unicodeerror 等等,可否解决捏。 2. 我理解设置 info error 等日志等级,我很好奇这个轮子咋知道函数返回的错误等级捏,并且正确记录呢? 万分感谢你能在百忙之中抽空看我的问题~ |
9
rale 2016-08-22 19:07:19 +08:00 1
当错误出现的时候,或许你还想打印调用栈的信息,建议先 from traceback import format_exc
|
11
xiahei 2016-08-22 21:52:40 +08:00
多读书可破。
报错信息。 令,熟读 #5 楼的文章。 |
12
eloah 2016-08-22 23:00:50 +08:00 via Android
个人也觉得很神奇, log 似乎是一个静态方法,运行在整个进程(线程?)内
|
13
wyntergreg 2016-08-23 08:46:04 +08:00
logger = logging.getLogger("file.log")
except Exception: excpt = traceback.format_exc() # print excpt logger.error( '...') |
14
mckelvin 2016-08-23 13:21:02 +08:00
|