我想我可能忽略了为您的应用程序提供日志记录框架的意义。在所有的小应用程序中,我总是编写一个小的“日志”类,并将日志消息传递给其中的一个方法,该方法被写入一个文件。
像log4net这样的第三方日志记录框架的用途是什么?日志写入操作是否具有线程安全性,或者我是否遗漏了什么?
发布于 2008-09-28 00:43:32
这是一个很好的问题。
第一个原因是“有何不可?”如果您正在使用日志记录框架,那么您将获得使用已经打包的东西的可维护性好处。
第二个原因是日志记录是微妙的。不同的线程、会话、类和对象实例可能都会在日志记录中发挥作用,您不希望必须在运行中解决这个问题。
第三个原因是,您可能会发现代码中存在性能瓶颈。找出代码很慢是因为您在没有缓冲的情况下写入文件,或者您的硬盘驱动器由于记录器没有滚动和压缩旧文件而耗尽了磁盘空间,这可能是一件令人头疼的事情。
第四个原因是,您可能希望附加到syslog,或者写入数据库、套接字或不同的文件。框架内置了此功能。
但实际上,第一个答案是最好的;你自己写的好处很少,还有一大堆缺点。
发布于 2008-09-27 23:06:09
您可能想要切换到db来记录一些消息,或者切换到一个警报系统来寻呼穷人的支持。
更重要的是,大多数日志记录框架允许您指定不同类的日志级别,这样您就不需要在每次想要更多/更少日志记录(即您刚刚在生产中发现的bug的详细日志记录)时削减一个新的二进制文件。
Log4Net's site有更多细节。
发布于 2008-09-27 23:40:18
其他评论省略了一些东西:如果已经有一个库可以做你想要的事情,它就省去了你写代码的麻烦。
你在这里可能是在玩语义游戏:对我来说,“日志框架”通常只不过是一个将日志消息写入文件的类……所以你要做的就是编写你自己的日志框架。既然您已经这样做了,那么“使用日志框架”显然是有意义的!
最终,您需要确保它正确处理并发日志记录(锁定输出流),可以将日志记录到文件、syslog等,可以执行日志滚动,等等。您可以通过使用别人经过良好测试的代码来省去这些工作。
https://stackoverflow.com/questions/144682
复制相似问题