Убедитесь, что следующие ссылки установить:
- log4net (очевидно)
- System.Data.SQLite (вы можете забыть об этом один)
Закройте проект в Визуальная Studio и снова запустите .csproject (или эквивалент для VB) в текстовом редакторе и найдите раздел ссылок. Шахта выглядит так:
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\externals\log4net-1.2.10\bin\net\2.0\release\log4net.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\externals\sqlite.net\System.Data.SQLite.dll</HintPath>
</Reference>
Обратите внимание на ссылку для SQLite. В этом случае вам понадобится этот текст: System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139
Это полное имя сборки, на которой размещаются классы соединения SQL, совместимые с ADO.net, на самом деле это зависит от того, с чем связана log4net.
Повторно запустите проект в Visual Studio, убедитесь, что у вас есть файл .config и откройте его в текстовом редакторе XML. Здесь будет проще вставить мой конфигурационный файл, а не объяснять все. Обратите внимание, что здесь вы собираетесь использовать имя сборки.
Put это в узле configSections XML:
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
Как прямой XML childnode конфигурации, поместить этот раздел XML:
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>
</appender>
<appender name="sqlite" type="log4net.Appender.AdoNetAppender">
<bufferSize value="100" />
<connectionType value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
<connectionString value="Data Source=log4net.db;Version=3;" />
<commandText value="INSERT INTO Log (Date, Level, Logger, Message) VALUES (@Date, @Level, @Logger, @Message)" />
<parameter>
<parameterName value="@Date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@Level" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@Logger" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@Message" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="sqlite" />
</root>
</log4net>
В качестве последнего шага вы должны убедиться, что sqlite db-файл, который вы указали заранее в указанном месте. Один из способов сделать это - создать базу данных и прикрепить ее как ресурс, который нужно скопировать в выходную папку. Убедитесь, что оно имеет то же имя, что и вы указали (в этом случае log4net.db
)
Спасибо за действительно полезный ответ. Я не мог понять connectionType и не думал, чтобы посмотреть в .csproj файл. Это полностью сработало для меня! +1 – Dave