views:

744

answers:

2

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?

+5  A: 

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);

Thad
That worked perfectly. I knew it must have been something simple. Thanks.
Stephen Tolton
+4  A: 

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.

www.l4ndash.com – Log4Net Dashboard