擅长:python、mysql、java
<p>这是一种黑客攻击,但您可以在当前模块中重新定义<code>print</code>,其他模块可以执行<code>from foo import print</code>来使用它。在</p>
<p>为了简单起见,在这个例子中我没有使用文件句柄,而是使用stdout/stderr。如果您使用文件,您仍然可以向新的<code>print</code>函数添加<code>sys.stdout.write(msg+os.linesep)</code>语句。在</p>
<p>{{cd1}可能不支持多个新的参数。在</p>
<pre><code>import logging,sys
def print(*args):
logger.info(" ".join([str(x) for x in args]))
if __name__ == '__main__':
logger = logging.getLogger('foo')
logger.addHandler(logging.StreamHandler(sys.stdout))
logger.addHandler(logging.StreamHandler(sys.stderr))
logger.setLevel(logging.INFO)
a=12
logger.info('1. This should appear in both stdout and stderr.')
print("logging works!",a)
</code></pre>
<p>(必须用括号括起来)。结果:</p>
^{pr2}$