简体   繁体   中英

How do you log the machine name via log4net?

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?

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.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM