2013-05-17 2 views
0

Я попытался использовать log4net для записи информации в db, и я застрял с ней сейчас. Не уверен, что я делаю неправильно. Какое бы сообщение я не отправлял в базу данных, показывает любую ошибкуLog4net не вставляет данные в таблицу - не отображается ошибка

У меня есть базовое приложение WINForm на C#, и я пытаюсь вставить журнал в db.

Мой log4net.xml ниже.

<?xml version="1.0" encoding="utf-8" ?> 
<log4net> 
    <root> 
    <level value="DEBUG" /> 
    <appender-ref ref="ADONetAppender" /> 
    </root> 
    <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender"> 
    <bufferSize value="1" /> 
    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    <connectionString value="Data Source=CTI-OPT780-06\MSSQL2008; Initial Catalog=MYDB; Integrated Security = True;" /> 
    <commandText value="INSERT INTO [Log] ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> 
    <parameter> 
     <parameterName value="@log_date"/> 
     <dbType value="DateTime"/> 
     <layout type="log4net.Layout.RawTimeStampLayout"/> 
    </parameter> 
    <parameter> 
     <parameterName value="@thread"/> 
     <dbType value="String"/> 
     <size value="255"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%thread"/> 
     </layout> 
    </parameter> 
    <parameter> 
     <parameterName value="@log_level"/> 
     <dbType value="String"/> 
     <size value="50"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%level"/> 
     </layout> 
    </parameter> 
    <parameter> 
     <parameterName value="@logger"/> 
     <dbType value="String"/> 
     <size value="255"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%logger"/> 
     </layout> 
    </parameter> 
    <parameter> 
     <parameterName value="@message"/> 
     <dbType value="String"/> 
     <size value="4000"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%message"/> 
     </layout> 
    </parameter> 
    <parameter> 
     <parameterName value="@exception"/> 
     <dbType value="String"/> 
     <size value="2000"/> 
     <layout type="log4net.Layout.ExceptionLayout"/> 
    </parameter> 
    <parameter> 
     <parameterName value="@context" /> 
     <dbType value="String" /> 
     <size value="512" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%x" /> 
     </layout> 
    </parameter> 
    </appender> 
</log4net> 

C# код для доступа к нему:

private ILog logger = LogManager.GetLogger(typeof(DBAccess)); 

public TestDB() 
{ 
    logger.Debug("Here is a debug log."); 
    logger.Info("... and an Info log."); 
    logger.Warn("... and a warning."); 
    logger.Error("... and an error."); 
    logger.Fatal("... and a fatal error."); 
} 

Создать таблицу для

Вход
CREATE TABLE [dbo].[Log] 
(
    [Id] [int] IDENTITY(1,1) NOT NULL, 
    [Date] [datetime] NOT NULL, 
    [Thread] [varchar](32) NOT NULL, 
    [Context] [varchar](512) NULL, 
    [Level] [varchar](512) NOT NULL, 
    [Logger] [varchar](512) NOT NULL, 
    [Message] [varchar](4000) NOT NULL, 
    [Exception] [varchar](2000) NULL 
) 

Было бы очень здорово, если бы кто-то мне указывает, где я м делает ошибку. Спасибо

+0

Вы пытались указать таблицу в файле конфигурации, то есть (извините, пришлось заменить @ на «at», чтобы опубликовать это как комментарий): Martin

+0

@Martin это необходимо? Я не помещал никакой записи в файл конфигурации ... –

+0

Должен заметить, что у меня нет непосредственного опыта работы с log4net. Но как log4net знает, где сохранить записи журнала, если вы не указали имя таблицы в файле конфигурации или в коде? – Martin

ответ

0

благодарит за замечательную помощь. Мне так глупо, что я не делал «configure».

Добавлено

log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(sFIleName + "\\log4net.xml")); 

и все было исправлены ..

Использования трассировки рассказанной @sgmoore также помогли решить проблему с правами доступа к БД.

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