use*_*904 3 python scripting logging
有没有更好的方法只在作为脚本运行时进行打印,何时__name__ == '__main__'?
我有一些脚本,我也导入和使用的部分.
像下面这样的东西会起作用但是很难看,并且必须分别在每个脚本中定义:
def printif(s):
if globals()['__name__'] == '__main__':
print (s)
return
Run Code Online (Sandbox Code Playgroud)
我简要介绍了一些python的日志库,但更喜欢两个更轻的解决方案......
编辑:
我最终做了这样的事情:
# mylog.py
import sys
import logging
log = logging.getLogger()
#default logging level
log.setLevel(logging.WARNING)
log.addHandler(logging.StreamHandler(sys.stdout))
Run Code Online (Sandbox Code Playgroud)
并从脚本:
import log from mylog
...
log.info(...)
log.warning(...)
...
if __name__ == '__main__':
#override when script is run..
log.setLevel(logger.INFO)
Run Code Online (Sandbox Code Playgroud)
此方案具有最少的代码重复,每个脚本日志级别和项目范围的默认级别......这正是我想要的.
run_as_script = False
def printif(s):
if run_as_script:
print (s)
return
if __name__ == '__main__':
run_as_script = True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
183 次 |
| 最近记录: |