【发布时间】:2019-07-23 08:00:45
【问题描述】:
我是 python 新手并试图理解日志记录(虽然我对编程一点也不陌生)。试图复制我们在 Java 中拥有的 log4j 记录器。有以下文件的简单测试项目: - 用户.py - 测试.py - 会议/ - 日志记录.conf - 日志
所有的 python 文件都有记录器对象来记录到 logging.conf 中提到的特定文件。但是,只有 Test.py 文件转储日志。不是 User.py 文件。
User.py如下:
import logging
import logging.config
logging.config.fileConfig('conf/logging.conf')
logger = logging.getLogger(__name__)
class User:
username = ""
password = ""
def __init__(self, username = "username", password = "password"):
global logger
logger.debug( "In User constructor" );
self.username = username
self.password = password
logger.debug( "Out User constructor" );
def getSomething(self) :
return "Something"
def login_user(self) :
logger.debug( "In login_user" );
logger.debug( "Out login_user" );
return "Logged In"
Test.py如下:
from User import User
import logging
import logging.config
from threading import Thread
logging.config.fileConfig('conf/logging.conf')
logger = logging.getLogger(__name__)
objectsCount = 1
logger.debug("In VolumeTest")
def thr_func(username, password):
logger.info("In thr_func")
user1 = User(username, password)
logger.info("Created user obj")
logger.info("Before login_user call")
token = user1.login_user()
logger.debug ( "Out thr_func")
def main() :
thr_func( "abc", "def" )
logger.info("In Main")
thr_objects = []
for i in range(objectsCount):
thread = Thread(target=thr_func, args=("subhayan", "MER2018"))
thr_objects.append(thread)
logger.info("Main : before running thread")
for i in range(objectsCount):
logger.info("Main : starting thread " + str(i))
thr_objects[i].start()
logger.info("Main : started thread " + str(i))
logger.info("Main : wait for the thread to finish")
for i in range(objectsCount):
thr_objects[i].join()
logger.info("Main : all done")
if __name__ == "__main__":
main()
logging.conf 文件如下:
[loggers]
keys=root
[handlers]
keys=logfile
[formatters]
keys=logfileformatter
[logger_root]
level=DEBUG
handlers=logfile
[formatter_logfileformatter]
format=%(asctime)s %(name)-12s: %(threadName)s : %(levelname)s : %(message)s
[handler_logfile]
#class=handlers.RotatingFileHandler
class=handlers.TimedRotatingFileHandler
#class=TimedCompressedRotatingFileHandler
level=DEBUG
#args=('testing.log','a',10,100)
args=('log/testing.log','d', 1, 9, None, False, False)
formatter=logfileformatter
我尝试使用:“python Test.py”运行。但是,没有来自用户文件的日志所以,问题是,我们不能以这种方式记录第二个文件吗?我究竟做错了什么 ?如果没有错,在 python 中执行此操作的最佳方法是什么?
【问题讨论】:
标签: python logging configuration