Logging from multiple processes to same file using Enterprise Library 4.1

主宰稳场 提交于 2019-12-03 13:00:42

Sorry to say but the answer is no. The File TraceListeners lock the output file so only one TraceListener can log to a file.

You can try other Trace Listeners that are not file based (e.g. Database, Event Log).

Another option I can think of would be to write your own logging service (out of process) that would log to the file and accepts LogEntries. Then create a custom trace listener that sends a message to your service.

It might not be a good idea since you would have a bit of custom development plus it could impact performance since it is an out of process call. Basically you are setting up your own simplified-pseudo-distributor-service.

EntLib locks the log file when it writes to it. Therefore, 2 processes cannot write to the same log file.

When we have had this problem, that we needed to log from many difference places, to the same place, we have used database logging.

If you are 100% stuck logging to a text file, then you could log to individual log files, and then write a program to merge these files.

I know this is old, but if you are still curious. log4net supports this:

http://logging.apache.org/log4net/release/faq.html#How do I get multiple process to log to the same file?

The problem occurs when the App Pool Recycles and allows for Overlapping Threads. The closing thread has it still open, and the new thread gets the error. Try disabling the overlapping recycling behavior in IIS, or create your own version of the text writer.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!