45

I am using Log4Net with the AdoNetAppender to log messages from a simple systray application into a SQL Server 2005 database.

I want to log the machine name along with the log message because this application will be running on multiple machines and I need to know on which one the message originated.

But, I cannot find a way to expose this information via the log4net.Layout.PatternLayout that I am using with the appender.

Is there a way to log the machine name via log4net in this manner?

2 Answers 2

93

You can use the pre-populated property log4net:HostName, for example:

<conversionPattern value="%property{log4net:HostName}" /> 

This way you don't need to populate the MDC.

Sign up to request clarification or add additional context in comments.

2 Comments

For future readers, I got my AdoNetAppender to work with this <parameter name="workstation"> <parameterName value="@workstation"/> <dbType value="String"/> <size value="256" /> <layout type="log4net.Layout.PatternLayout" value="%property{log4net:HostName}" /> </parameter>
Future readers. I ~think this comes from the FIELDS on this page : logging.apache.org/log4net/release/sdk/html/…
11

you can create a parameter similar to the following:

<parameter> <parameterName value="@machine" /> <dbType value="String" /> <size value="255" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%X{machine}" /> </layout> </parameter> 

Then add this line before writing to the log: MDC.Set("machine", Environment.MachineName);

1 Comment

That worked perfectly. I knew it must have been something simple. Thanks.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.