首页 / 日志 / 如何在多个模块中使用python日志记录
如何在多个模块中使用python日志记录
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在多个模块中使用python日志记录,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1921字,纯文字阅读大概需要3分钟。
内容图文
![如何在多个模块中使用python日志记录](/upload/InfoBanner/zyjiaocheng/702/ce918120c895489e9cc5e2f2d6e66598.jpg)
我想知道在Python应用程序中执行日志记录的标准设置是什么.
我正在使用Logging类,并且我编写了自己的logger类来实例化Logging类.我的主要然后实例化我的记录器包装类.但是,我的main实例化其他类,我希望其他类也能够通过main中的logger对象写入日志文件.
如何使该logger对象可以被其他类调用?这几乎就像我们需要某种静态记录器对象来实现它.
我想问题的长短之处在于:如何在代码结构中实现日志记录,以便从main中实例化的所有类都可以写入同一个日志文件?我是否只需要在指向同一文件的每个类中创建一个新的日志记录对象?
解决方法:
我不知道你的Logging类是什么意思 – 在Python的内置日志记录中没有这样的类.你真的不需要包装器:这是一个如何从你编写的任意类进行日志记录的例子:
import logging
# This class could be imported from a utility module
class LogMixin(object):
@property
def logger(self):
name = '.'.join([__name__, self.__class__.__name__])
return logging.getLogger(name)
# This class is just there to show that you can use a mixin like LogMixin
class Base(object):
pass
# This could be in a module separate from B
class A(Base, LogMixin):
def __init__(self):
# Example of logging from a method in one of your classes
self.logger.debug('Hello from A')
# This could be in a module separate from A
class B(Base, LogMixin):
def __init__(self):
# Another example of logging from a method in one of your classes
self.logger.debug('Hello from B')
def main():
# Do some work to exercise logging
a = A()
b = B()
with open('myapp.log') as f:
print('Log file contents:')
print(f.read())
if __name__ == '__main__':
# Configure only in your main program clause
logging.basicConfig(level=logging.DEBUG,
filename='myapp.log', filemode='w',
format='%(name)s %(levelname)s %(message)s')
main()
通常,没有必要在类级别拥有记录器:在Python中,与Java不同,程序(de)组合的单位是模块.但是,正如我上面所示,没有什么可以阻止你这样做.该脚本在运行时显示:
Log file contents:
__main__.A DEBUG Hello from A
__main__.B DEBUG Hello from B
请注意,两个类中的代码都记录到同一个文件myapp.log中.即使A和B在不同的模块中也可以使用.
内容总结
以上是互联网集市为您收集整理的如何在多个模块中使用python日志记录全部内容,希望文章能够帮你解决如何在多个模块中使用python日志记录所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。