2013-07-05 5 views
0

У меня есть log4net, регистрирующийся в моей базе данных после нескольких примеров и руководств. Мне не все ясно.Вопросы, касающиеся log4net's AdoNetAppender

В примере на the log4net page он перечисляет следующий узел в области конфигурации.

<parameter> 
    <parameterName value="@exception" /> 
    <dbType value="String" /> 
    <size value="2000" /> 
    <layout type="log4net.Layout.ExceptionLayout" /> 
</parameter> 

Этот параметр, как представляется, передает пустую строку в базу данных даже при входе в систему из исключения.

Может кто-нибудь уточнить, что должно быть зарегистрировано в этом поле и когда?

Также этот пример также имеет «поток», который регистрируется в базе данных как varchar (255). То, что я получаю в этом поле, является целым числом. Я не знаком с потоками. Могу ли я просто сохранить это как int? В конце концов, это будет строка?

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

ответ

1

Для того, чтобы исключения быть заполнены, вы должны использовать правильную перегрузку

, например, если вы используете

catch (Exception ex) 
{ 
    log.Error("Error saving details" , ex); 
    ... 
} 

, то столбец исключение из базы данных будет установлен ex.ToString()

Если вы используете

log.Error("Error saving details " + ex.ToString()); 

тогда исключение не заполнено

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

например

var ts = new System.Threading.ThreadStart(InitialiseDatabase); 
var thread = new System.Threading.Thread(ts); 
thread.Name = "Initialising Database"; 

Это хорошая идея, чтобы назвать ваши темы, как это делает фильтрацию/отождествление гораздо проще.

+0

Спасибо! Подтверждено как работающее для меня. – BillyPilgrim

Смежные вопросы