且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

日志记录与调试

更新时间:2022-10-26 22:33:38

使用任何日志框架完成绝对最有价值的事情是一键式工具收集所有日志,并将其发送给我,即使应用程序部署在属于客户的计算机上。



在要记录的内容上做出很好的选择,以便您可以大致跟随您的应用程序中的主要路径。



作为框架,我使用了标准(log4net,log4java,log4c ++)



不要实现自己的日志框架,当已经有一个很好的开箱即用的。大多数人只是重塑***。


Background: I've inherited a web application that is intended to create on-the-fly connections between local and remote equipment. There are a tremendous number of moving parts recently: the app itself has changed significantly; the development toolchain was just updated; and both the local and remote equipment have been "modified" to support those changes.

The bright side is that it has a reasonable logging system that will write debug messages to a file, and it will log to both the file and a real-time user screen. I have an opportunity to re-work the entire log/debug mechanism.

Examples:

  • All messages are time-stamped and prefixed with a severity level.
  • Logs are for the customer. They record the system's responses to his/her requests.
  • Any log that identifies a problem also suggests a solution.
  • Debugs are for developers and Tech Support. They reveal the system internals.
  • Debugs indicate the function and/or line that generated them.
  • The customer can adjust the debug level on the fly to set the verbosity.

Question: What best practices have you used as a developer, or seen as a consumer, that generate useful logs and debugs?


Edit: Many helpful suggestions so far, thanks! To clarify: I'm more interested in what to log: content, format, etc.--and the reasons for doing so--than specific tools.

What was it about the best logs you've seen that made them most helpful?

Thanks for your help!

The absolutley most valueable thing done with any logging framework is a "1-click" tool that gathers all logs and mail them to me even when the application is deployed on a machine belonging to a customer.

And make good choices at what to log so you can roughly follow the main paths in your application.

As frameworks I've used the standards (log4net, log4java, log4c++)

do NOT implement your own logging framework, when there already is a good one out-of-the-box. Most people who do just reinvent the wheel.