相关疑难解决方法(0)

什么是猴子补丁?

我想了解什么是猴子补丁或猴子补丁?

这类似于方法/运算符重载或委托吗?

这些东西有什么共同之处吗?

python monkeypatching terminology

496
推荐指数
8
解决办法
17万
查看次数

如何将sys.stdout复制到日志文件?

编辑:因为似乎没有解决方案,或者我正在做一些没人知道的非标准的东西 - 我会修改我的问题也要问:当python应用程序创建时,完成日志记录的最佳方法是什么很多系统调用?

我的应用程序有两种模式.在交互模式下,我希望所有输出都转到屏幕以及日志文件,包括来自任何系统调用的输出.在守护程序模式下,所有输出都将转到日志中.守护进程模式很好用os.dup2().我无法找到一种方法将所有输出"发送"到交互模式的日志,而无需修改每个系统调用.


换句话说,我想要命令行'tee'的功能,用于python应用程序生成的任何输出,包括系统调用输出.

澄清:

要重定向所有输出,我会做这样的事情,并且效果很好:

# open our log file
so = se = open("%s.log" % self.name, 'w', 0)

# re-open stdout without buffering
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

# redirect stdout and stderr to the log file opened above
os.dup2(so.fileno(), sys.stdout.fileno())
os.dup2(se.fileno(), sys.stderr.fileno())
Run Code Online (Sandbox Code Playgroud)

关于这一点的好处是它不需要来自其余代码的特殊打印调用.该代码还运行一些shell命令,因此不必单独处理每个输出.

简单地说,我想做同样的事情,除了重复而不是重定向.

起初以为我认为简单地扭转它们dup2应该有效.为什么不呢?这是我的测试:

import os, sys

### my broken solution:
so = se = open("a.log", 'w', 0)
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

os.dup2(sys.stdout.fileno(), so.fileno())
os.dup2(sys.stderr.fileno(), se.fileno()) …
Run Code Online (Sandbox Code Playgroud)

python tee

140
推荐指数
11
解决办法
10万
查看次数

如何在Python日志记录模块中抑制换行符.

我想取消换行符,例如log.info("msg").当我们"打印"它时

print msg,
Run Code Online (Sandbox Code Playgroud)

所以我需要像昏迷这样的东西来记录.

我播下这个问题 在Python日志模块中抑制换行, 但是任何人都可以给我参考或者像"Hello world"这样的简单例子谢谢!

python logging

11
推荐指数
2
解决办法
7386
查看次数

Python 日志记录,终止符作为选项

我想要的:在任何地方使用日志库而不是打印语句。有时最好不要以新行结束。考虑这个简化的例子:

for file in files:
    print('Loading {}'.format(file), end='', flush=True)
    try:
        data = load(file)
        print('\rLoaded {}'.format(file))
    except:
        print('\rFailed loading {}'.format(file))
Run Code Online (Sandbox Code Playgroud)

显而易见的方法是使用:

handler = logging.StreamHandler()
handler.terminator = ""
Run Code Online (Sandbox Code Playgroud)

但是,我不想向我的库添加处理程序,并且我确实希望主记录器的默认行为是以新行终止。以“”结尾感觉应该是例外,而不是规则。
有没有办法让我可以做类似的事情:

logger.info(msg, terminator="")
Run Code Online (Sandbox Code Playgroud)

无需为日志记录模块创建大量子类?

我对这个问题的看法是否合理,或者有更好的方法来处理这个问题吗?

python logging python-3.x

5
推荐指数
1
解决办法
2396
查看次数

标签 统计

python ×4

logging ×2

monkeypatching ×1

python-3.x ×1

tee ×1

terminology ×1