I'm writing an application that needs to log error/ exception messages but should still continue execution if the error is not a fatal error. I was thinking of making a method that returns a Task but calling this method as a fire and forget and not wait for response from the method. What is the recommendation, is this a good approach?
-
Why not to log it synchronously?– Roman BatsCommented Aug 8, 2019 at 18:01
-
The logging is happening in an external system, like Splunk and I don't want my application to wait till it completes and comes back.– BipinRCommented Aug 8, 2019 at 18:04
-
You might better look into the documentation for your logger. It is likely that it can write events in batches, asynchronously, reduceing application latency, so you actually not waiting for each record to be written to the Splunk– Roman BatsCommented Aug 8, 2019 at 18:19
1 Answer
Fire and forget is what we actually did. The less code you have in the application that is initiating the log message the less code that you have to debug there.
All you actually need to do is write your messages to a logfile(s), and spunk can be configured to process those log(s). You may want to have a process that queues the log messages and that appends them to the file - this would be useful if there are multiple processes or even multiple threads sharing the same log file, but also having n log files is also an option.
Having done this for splunk in C and C++ it is very straight forward.
-
The OP question as stated makes me hope that logging is not used as a substitute for appropriate error handling.– radarbobCommented Aug 12, 2019 at 22:45