As I see it there are two different types of logging:
- User-focused logs, like those produced by my anti-virus ("started scan", "no threats found", etc.)
- Developer-focused traces, which may be as simple as a log of exceptions or as detailed as a log of every method call
I'm currently planning how to incorporate the second type of logging into our application, so that we are able to get some record of what went wrong when a user reports a problem. I've seen several discussions of how verbose these traces should be and of available frameworks, but here I'm looking for some more general guidelines.
Particular questions I have include:
- Should we be logging to a file, to the Windows Event Log or somewhere else? For these developer-focused logs that are probably of no interest to the user, I feel that a file would be most appropriate. But in that case:
- Where should the file be located?
- Should we implement some form of log rotation to prevent the file growing too large?
- How can we handle multiple instances of the application accessing the log simultaneously?
- Should this tracing be switched on by default? If it is, I am a little concerned about performance; but if it is not, will we end up responding to many users' issues with "turn on tracing and try to reproduce the problem"? This doesn't sound too helpful.
I hope you can help me with these questions. I'd also appreciate any other advice you have on this topic.