We have a big process in our application that works once a month. This process usually runs after about 30 minutes and generates 342000 or so log events. We recently upgraded our registration to a centralized model using WCF and are now experiencing performance issues. While the previous solution will complete in about 30 minutes, now with new logging it takes 3 or 4 hours. The problem is that the application does wait for the WCF request to complete before completion. The WCF method is already configured as IsOneWay, and I wrapped the client-side call in this WCF method in another thread to try to prevent this type of problem, but it did not seem to work. I thought about using async WCF calls, but thought before I tried something else,I would ask here to see if there is a better way to handle this.
342000 30 , , 190 . , WCF. , , , , - , , HTTP-, , ( HTTP ). WCF 10 , , 10 , , HTTP 10 , 10 . , ( ..), , , MaxConcurrentCalls MaxConcurrentInstances ServiceBehavior - ( - 16 10 ).
MaxConcurrentCalls
MaxConcurrentInstances
ServiceBehavior
, , , Logger.LogEvent(eventData). , , LogEvent, , , , , .
Logger.LogEvent(eventData)
LogEvent
(.. WCF) - , . 342 000 - !
, , , 1000 , . .
log4net , , , . appender - bufferSize. (, , ), , , -, , "" Appender.
bufferSize
We use it with AdoNetAppender on a system with the same volume and works great.
Traditional syslog always exists , there are many syslog daemons that run on Windows. It is designed for a more efficient centralized logging method than WCF, which is designed for less intensive operations, especially if you are not using the WCF tcpip configuration.
In other words, go with it - the right tool for the job.