开发者

What is the best way to create a log for each instance of a class in log4net?

We have a couple of long lived objects each of the same class in the system. There are only about 5 or 6 and they are connections to outside systems. I want each of those in开发者_Python百科stances to have their own file that they can log to.

What is the best way to do this? I can only see adding loggers programatically as the answer right now.

UPDATE: I want to avoid using the configuration file because if I add a new connection to a different remote host then i want its log output to go to file named after the connection without having to first hack around in a config file. It would be nice if it was done automagically. I don't know maybe this can be achieved in a config file once off and that you don't need to edit it everytime.


The best answer IS programatical logging, i went through the same problem and found it as the only solution.

For more help check this question (mine) StackOverFlow Question posted by me

and i thing yours and my problem are the same, dynamic loggers, re create loggers, dispose loggers and all that stuff at runtime :)

if any more questions, do ask, will be glad to help since i have gone through all that :)


I can actually see a couple of possibilities:

  1. Assign each logging to a different category for each connection and append logs for each category to different files.
  2. Create new loggers programmatically as you suggested.
  3. Use dependency injection to inject as many separate logger as you need.


I have an article that might help:

http://horth.com/blog/?p=165

This is about changing a logfile at runtime. What you could do is pass in the file name for each instance into your log4net file. That way you could create a log file for each instance of your class.

As for your edit about not wanting to use a config file, this method gets around that issue so that you can use a config file but still have the flexibility you want.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜