Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在不知道上游(命名空间)模块实例是否存在的情况下访问其详细信息?_Python_Logging_Namespaces_Python 2.7_Global Variables - Fatal编程技术网

Python 如何在不知道上游(命名空间)模块实例是否存在的情况下访问其详细信息?

Python 如何在不知道上游(命名空间)模块实例是否存在的情况下访问其详细信息?,python,logging,namespaces,python-2.7,global-variables,Python,Logging,Namespaces,Python 2.7,Global Variables,回答Leenert Regebro的问题: 显然我的直觉是对的,这是不可能的。而且很明显,因为两小时内只有一个答案。 也感谢所有的礼物 我的GoogleFoo让我失望了 我正在编写一个自定义异常库作为一个模块,用于单个发布服务器下的多个项目。我可能对其他项目没有发言权,或者我可能有发言权。所以我和其他人都可以使用它。“和其他人”是这里的问题。在my exceptions(我的例外情况)模块中,将使用日志记录模块为日志文件输出回溯等特定功能。这对我来说很好,因为我使用日志记录模块 但是,如果其他人

回答Leenert Regebro的问题: 显然我的直觉是对的,这是不可能的。而且很明显,因为两小时内只有一个答案。 也感谢所有的礼物

我的GoogleFoo让我失望了

我正在编写一个自定义异常库作为一个模块,用于单个发布服务器下的多个项目。我可能对其他项目没有发言权,或者我可能有发言权。所以我和其他人都可以使用它。“和其他人”是这里的问题。在my exceptions(我的例外情况)模块中,将使用
日志记录
模块为日志文件输出回溯等特定功能。这对我来说很好,因为我使用
日志记录
模块

但是,如果其他人(不使用
日志记录
)使用异常库,我需要跳过日志记录部分。“尝试…”可以解决此问题,但如果他们正在使用
日志记录
?在这种情况下,我需要能够确定他们的日志记录方案(控制台/文件/流、文件名等),这样我就可以创建一个子日志记录程序,它将写入他们的文件(或控制台或您拥有的其他文件):


他们的日志=函数无法计算如何写入()
temp_var=他们的_logger.name+“.ExceptionLogger”
myLogger=logging.getLogger(临时变量)
显然,我可以创建一个单独的类或函数来实例化我的模块,并让它接收一个类型为
logging.logger
的参数,但如果可能的话,我更愿意证明这一点

我甚至无法检查
global
globals()
dict中我知道的值,因为其他程序员可能不使用它


有没有办法做到这一点?(假设我的库已经导入,可能不是由顶级应用程序导入的…)我个人从未尝试过在没有显式传递的情况下从命名空间中的上游获取数据,以便在较低的命名空间中可用,我甚至怀疑这是可能的,但有很多程序员在那里,有人做到过吗?

默认情况下包含可选配置是个坏主意。不要在默认情况下添加日志细节,然后通过try/except隐藏某种猜测来排除它,而是将代码的这一部分放入函数中,并从代码中显式调用它

你不能做傻事。事实上,你拥有的魔法和隐藏的逻辑越多,对白痴的证明就越少,很快,它就会变成对智力的证明,而理解魔法就变得非常困难


因此,请按照您的想法制作一个函数并将其传递给记录器。

默认情况下包含可选配置是个坏主意。不要在默认情况下添加日志细节,然后通过try/except隐藏某种猜测来排除它,而是将代码的这一部分放入函数中,并从代码中显式调用它

你不能做傻事。事实上,你拥有的魔法和隐藏的逻辑越多,对白痴的证明就越少,很快,它就会变成对智力的证明,而理解魔法就变得非常困难


因此,按照您的想法制作一个函数并将其传递给记录器。

FYI,没有必要在问题标题中添加标签;)@奥利..哈哈,它们并不是用来做标签的,只是用来把问题和关于主题的提示分开。例如,你可以得到记录者的层次结构,但你不应该像@Lennart Regebro指出的那样。@J.F.--谢谢你,但正如你指出的那样。。。。不太好仅供参考,没有必要在问题标题中添加标签;)@奥利..哈哈,它们并不是用来做标签的,只是用来把问题和关于主题的提示分开。例如,你可以得到记录者的层次结构,但你不应该像@Lennart Regebro指出的那样。@J.F.--谢谢你,但正如你指出的那样。。。。不太好+20“你拥有的魔法和隐藏的逻辑越多,对白痴的证明就越少,很快就会成为对智力的证明”。@Lennart和Burhan……以前从未遇到过对智力的证明……这有点像是对儿童的避孕药瓶吗?(调试证明我当然会说…+20表示“你拥有的魔法和隐藏的逻辑越多,对白痴的证明就越少,很快它就会成为智能证明”。@Lennart和Burhan…以前从未遇到过智能证明…,这有点像防儿童药瓶吗?(我当然会说…)
<snip>
their_logger = THE_FUNCTION_I_CANNOT_FIGURE_OUT_HOW_TO_WRITE()
temp_var = their_logger.name + ".ExceptionLogger"
myLogger = logging.getLogger(temp_var)
</snip>