我想知道如何实现一个可以在任何地方使用您自己的设置的全局记录器:
我目前有一个自定义记录器类:
class customLogger(logging.Logger):
...
Run Code Online (Sandbox Code Playgroud)
该类位于一个单独的文件中,包含一些格式化程序和其他内容.记录仪可以完美地完成.
我在我的主python文件中导入这个模块并创建一个这样的对象:
self.log = logModule.customLogger(arguments)
Run Code Online (Sandbox Code Playgroud)
但显然,我无法从代码的其他部分访问此对象.我使用了错误的方法吗?有一个更好的方法吗?
我是Python新手,刚开始一个项目.我习惯log4j在Java中使用,我想像在Java中一样在Python中记录所有模块和类.
在Java中,我在src文件夹中有一个日志配置文件,log4j.properties如下所示:
log4j.rootLogger=DEBUG, Console, fileout
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} %5p [%t] (%F:%L) - %m%n
log4j.appender.fileout=org.apache.log4j.RollingFileAppender
log4j.appender.fileout.File=servidor.log
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} (%F:%L) %p %t %c - %m%n
Run Code Online (Sandbox Code Playgroud)
它记录到控制台和文件.
在我的类中,我只需要导入log4j并添加一个静态属性来恢复已log4j加载配置的记录器,然后所有类都将登录到控制台和文件中.配置文件由名称自动加载.例如:
import org.apache.log4j.Logger;
public class Main {
public static Logger logger = Logger.getLogger(Main.class);
public static void main(String[] args) {
logger.info("Hello");
}
}
Run Code Online (Sandbox Code Playgroud)
现在我在使用Python设置日志记录时遇到问题,我已经阅读了文档,但我找不到在许多模块/类中使用它的方法.我怎样才能以简单的方式设置Python日志记录,以便在每个模块/类中没有代码的情况下记录我的模块和类?是否有可能重现我在Python中编写的相同代码?