- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我尝试将 getLogger 放在模块级别。然而,它也有一些缺点。这是我的例子:
from logging.handlers import TimeRotatingFileHandler
log_monitor = logging.getLogger('monitorlog')
log_monitor.setLevel(logging.DEBUG)
log_monitor.propagate = False
handler = TimedRotatingFileHandler('somedirectory/monitor.log',
when='h',
interval=1,
backupCount=30)
monitor_format = logging.Formatter('%(asctime)s: %(message)s')
handler.setFormatter(monitor_format)
log_monitor.addHandler(handler)
问题是,当其他模块导入这个模块时,上面的代码就会被执行。有可能,当时 somedirectory
甚至不存在,并且构建将失败。
实际上,这个记录器将在一个类中使用,所以我正在考虑将 getLogger
放入该类中。但是,我觉得如果人们创建该类的多个对象,那么该代码段将被多次调用。我想这部分代码应该只被调用一次。
我对Python还很陌生。人们通常将 getLogger
放在哪里,在这种情况下,我应该将这段代码放在哪里?
最佳答案
简短的回答,您只需要确保在创建目录后设置记录器即可。
如果您想导入上述内容然后再创建文件,一种方法是将代码放入函数中。
def monitor_log_setup():
log_monitor = logging.getLogger('monitorlog')
log_monitor.setLevel(logging.DEBUG)
log_monitor.propagate = False
handler = TimedRotatingFileHandler('somedirectory/monitor.log',
when='h',
interval=1,
backupCount=30)
monitor_format = logging.Formatter('%(asctime)s: %(message)s')
handler.setFormatter(monitor_format)
log_monitor.addHandler(handler)
return log_monitor
现在可以安全地导入此模块,您只需确保在开始记录之前(创建目录之后)调用该函数即可。
然后,只要您在代码中需要它,您就可以使用 logging.getLogger('monitorlog')
返回函数中定义的相同记录器。
关于Python:在哪里放置logging.getLogger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28554188/
我正在努力提高我的 Java 优化技能。为了实现这一目标,我制作了一个旧程序,我正在尽最大努力让它变得更好。在这个程序中,我使用 SL4J 进行日志记录。为了获得记录器,我做了: private st
我正在尝试使用 log4j2 在 Java 中创建一个简单的日志记录应用程序。 看起来是这样的: package com.company; import java.io.IOException; im
我创建了一个扩展 logging.Logger 的 CustomLogger。我正在尝试使用 getLogger 来获取我的记录器实例化。这是我的代码: import os import sys im
我尝试将 getLogger 放在模块级别。然而,它也有一些缺点。这是我的例子: from logging.handlers import TimeRotatingFileHandler log_mo
在我的模块我有这个: import logging import my_module_name.log log = logging.getLogger(__name__) 这工作正常,但我希望能够覆盖
如何获取给定 python 实例的日志文件路径 logging调用 getLogger() 后的对象? 我的 python 应用程序在主 python 脚本中设置日志记录如下。 import logg
我将 copy-webpack-plugin 从 4.6.0 升级为 6.0.2我改变了我的代码 plugins: [ new CopyWebpackPlugin([{ from:
我设置了一个基本的 Java 程序。我正在关注这个tutorial并有这个确切的代码: import org.slf4j.Logger; import org.slf4j.LoggerFactory;
我想知道如何获取我的自定义记录器通过log4j的LogManger.getLogger()方法。 我几乎确定我的项目不需要自定义记录器并使用默认的 log4j 记录器。 但是,如有必要,我想使用自定义
我已经阅读了大量帖子和文档(在本网站和其他地方),指出 SFL4J 日志记录的推荐模式是: public class MyClass { final static Logger logger
为什么大多数 log4net 示例通过这样做来获取类的记录器: private static ILog logger = LogManager.GetLogger( System.Re
这个问题在这里已经有了答案: python & suds “ImportError: cannot import name getLogger” 但是我好像遇到了一个无法用答案解释的情况。 详情如下:
当我执行以下代码时,日志事件仅记录一次。我正在使用 log4j2 记录器。但是当我使用 java.util.logger 时,所有 3 个日志事件均已成功发布。 public class Tes
稍后编辑:(为什么我认为这与 here 的情况不同) 所有操作都在一个实例方法中完成,进进出出,我处理的每个文件一次。我提取的本地字段(而不是内联)没有在其他任何地方使用,所以 GC 在迭代后无论如何
要在 Java 中使用记录器,现在我使用如下代码: Logger logger = Logger.getLogger("MyLog"); FileHandler fh; try { // This
来自logging howto对于 Python 2.7(我的重点): A good convention to use when naming loggers is to use a module-
我有这段代码要测试: log = logging.getLogger(__name__) class A(object): def __init__(self): log.de
Logger来自log4j自己的包。如果用Logger.getLogger,需要一个log4j的jar包,用此方式你只能依log4j: LogFactory来自common-logging包。如果
我知道应该通过 LogManager.getLogger() 创建一个 log4j 记录器实例,它会执行一些反射魔法来检测调用类,因此名称对于特定的日志级别配置很重要。但是,如果我不喜欢手动创建记录器
我正在处理一些遗留代码,其中包含很多代码 private final Logger logger = LogManager.getLogger(ThisClassName.class); 我想知道输入
我是一名优秀的程序员,十分优秀!