Как Вы регистрируете название машины через log4net?

Если класс не имеет конструктора, предоставленного программистом, то java-компилятор добавит конструктор по умолчанию с параметрами out, которые вызовут суперструктура класса внутри с вызовом super (). Это называется конструктором по умолчанию.

В вашем случае нет конструктора по умолчанию, поскольку вы добавляете их программно. Если конструкторы, добавленные вами, не будут добавлены, то созданный по умолчанию конструктор по умолчанию будет выглядеть следующим образом.

public Module()
{
   super();
}

Примечание. В конструкторе со стороны по умолчанию он также добавит вызов super (), чтобы вызвать суперкласс класса .

Назначение добавления конструктора по умолчанию:

Обязанность конструктора - инициализировать переменные экземпляра, если нет переменных экземпляра, которые вы могли бы выбрать, чтобы удалить конструктор из вашего класса. Но когда вы наследуете какой-то класс, ваша задача отвечать на вызов суперкласс-класса, чтобы убедиться, что суперкласс инициализирует все его переменные экземпляра должным образом.

Вот почему, если нет конструкторов, java-компилятор добавит конструктор по умолчанию и вызовет конструктор суперкласса.

41
задан Stephen Tolton 3 October 2008 в 02:00
поделиться

2 ответа

Можно использовать предзаполненное свойство log4net:HostName, например:

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

Этот путь Вы не должны заполнять MDC.

81
ответ дан saluce 4 August 2019 в 20:57
поделиться

можно создать параметр, подобный следующему:

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

Тогда добавляют эту строку прежде, чем записать в журнал: MDC.Set("machine", Environment.MachineName);

11
ответ дан James Wiseman 4 August 2019 в 20:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: