2016-01-20 100 views
3

我写了自己的日志记录类,将其定义为服务并放入AppBundle\Services名称空间中。当我想记录某些内容时,我可以在控制器内轻松访问它,但是如何从其他服务访问它?全局日志记录服务

我不得不通过日志服务的依赖注入,但如果我定义了100多个服务贸易(服务模块,事件侦听器等等,等等),他们每个人有自己的依赖?这会造成一团糟。

我一直也在思考延伸定义日志服务的一些核心服务,但话又说回来 - 我的所有服务,模块,事件监听器,就不得不延长一个核心类。

解决此问题的最佳方法是什么?

+1

在服务中派遣一个事件并用你的记录器收听。 – malcolm

+1

如果您已经拥有100多个服务,那么根据需要注入记录器似乎不会造成混乱。我想你可以尝试在你的服务定义中添加一些日志标记,然后使用编译器通过实际注入记录器。但似乎不值得这一努力。 – Cerad

回答

0

可能是一个很好的办法是重新考虑,以避免过多的服务的创建责任。

关于consumming服务本身的事实,我认为有没有问题重用,当您的应用程序生命周期需要尽可能多的。事实上,symfony将处理实例化,你只会将其作为服务来完成。

另一种方法将是为所有的核心对象创建的基类,让这些基类来处理登录服务,并最终类将日志中含蓄的方式。这不会保存服务呼叫,但几乎会让您手动处理。

如果你认为你会使用你的日志功能,在几个项目那么我建议你移动到文件夹的供应商,并以此作为外部模块,通过作曲家同步到您的帐户GitHub的。它会像你自己的第三方产品。

如果您不是symfony的朋友,那么您可以违反法律并通过自动加载创建自己的单身模式,但我认为您应该利用强大的symfony服务结构。