I wish to include the call stack (e.g. the methods that called me) in a log4net message. Is there a standard way of doing this?
(I know this will be slow, but I only need to do it on some errors)
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Yes – you can get this stack information using the following patterns in a pattern layout:
See the this documentation on the PatternLayout for more information.
Edit in response to Ian’s comment below: I don’t think log4net can be configured to write out the whole stack.
You can always fall back on writing it out for yourself, using something like
new StackTrace().ToString(), but I’m guessing the reason you ask is you want this to be configurable in the logging configuration.I’ll have a deeper look, but my gut feeling is there is no way to configure this, and that you’d end up having to implement your own Layout class.
Edit++
OK – here is a custom pattern layout class that derives from
PatternLayoutbut adds in a layout %stack.This code is a bit rough – illustrative only – not production ready! (for example, you may not have security permission to access the stack you are trying to print)
You can then configure this with the following pattern configuration (note %stack at the end of the layout):