我已经使用python创建了一个自定义记录器,并将其用作实用程序。我创建了基于上下文的应用程序,并使用针对不同情况的自定义处理程序创建了它。我试图使我的自定义记录器在所有模块中可见。但是我无法做到这一点。我不想仅在记录器中重复使用这些行,而仅将其传递给上下文和配置。
city district id price date
0 hz xs 20101 1.5 2019/8/1
1 hz xs 20101 50.0 2019/7/1
2 hz xs 20101 2.0 2019/6/1
3 hz xs 20101 2.2 2019/5/1
4 hz sn 20101 2.2 2019/4/1
5 hz sn 20102 2.1 2018/10/1
6 hz sn 20102 70.0 2019/3/1
7 hz sn 20102 2.2 2019/2/1
8 hz sn 20102 nan 2019/1/1
9 hz sn 20102 2.0 2018/12/1
10 hz sn 20102 2.2 2018/11/1
11 xz pd 20103 2.9 2015/7/1
12 xz pd 20103 2.0 2015/8/1
13 xz pd 20103 2.5 2015/9/1
14 xz pd 20103 3.0 2015/10/1
15 xz pd 20103 35.0 2015/11/1
16 xz pd 20103 3.2 2015/12/1
17 xz pd 20103 3.1 2016/1/1
18 xz pd 20103 nan 2016/2/1
19 xz pd 20103 nan 2016/3/1
20 xz pd 20103 nan 2016/4/1
在我的主模块中,我只是使记录器对象成为全局对象,以便其他方法可以使用记录器,而无需任何其他附加组件。有什么办法可以跨模块做同样的事情吗?
在许多类似的查询中。建议的是
logger = myLogger(config, context) # config has data for context based custom handling
但是,这也不会传递给我的自定义处理程序。
有人可以建议我如何实现这一目标。
使我的自定义记录器在整个运行时都处于全局状态,这样我就不必在需要时声明。
我的代码就是这样
logger = logging.getLogger(__name__)
答案 0 :(得分:0)
我的操作方式:
Logging.py
import logging
# Your custom stuff
logger = myLogger(config, context)
Every_other_file.py
from Logging import logger
Logging.py
import logging
# Your custom stuff
logger = myLogger(config, context)
def change_config(config):
global logger
logger = myLogger(config, context)
def set_logger(config)
global logger
logger = myLogger(config.context)
** main.py **
config = something
Logging.set_logger(config)
类似的东西。我的意思是,您可以使用它来调用方法,也可以更改值