Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
7 / 7 / 4
Регистрация: 20.06.2012
Сообщений: 129
Записей в блоге: 4
1

Как реализовать логирование в базу данных Sql Compact в WPF приложении?

15.06.2017, 11:17. Показов 1209. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет,
пытаюсь прикрутить логирование в WPF приложении с сохранением в локальную базу данных Sql Server Compact, но оно не работает.

Мой app.config:

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="App.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
    <!-- For more information on Entity Framework configuration, visit [url]http://go.microsoft.com/fwlink/?LinkID=237468[/url] -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <!-- For more information on Entity Framework configuration, visit [url]http://go.microsoft.com/fwlink/?LinkID=237468[/url] -->
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="SqlCeAppender" type="log4net.Appender.AdoNetAppender">
      <connectionType value="System.Data.SqlServerCe.SqlCeConnection, System.Data.SqlServerCe" />
      <connectionString value="Data Source=logs.sdf" />
      <commandText value="INSERT INTO Logs ([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>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="SqlCeAppender" />
    </root>
  </log4net>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Autofac" publicKeyToken="17863af14b0044da" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.6.0.0" newVersion="4.6.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <applicationSettings>
    <Aims16.App.Properties.Settings>
      <setting name="Language" serializeAs="String">
        <value>en</value>
      </setting>
    </Aims16.App.Properties.Settings>
  </applicationSettings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="System.Data.SqlServerCe.4.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
    </providers>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SqlServerCe.4.0" />
      <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    </DbProviderFactories>
  </system.data>
</configuration>
Как видите я добавил секцию log4net. В секции я опеределил appender (в нем connectionType, connectionString, commandText и parameter), также не забыл про root элемент.

Мой App.xaml.cs:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
 
namespace Aims16.App
{
    public partial class App : Application
    {
        private static readonly ILog Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
 
            Log.Info("Application started ...");
            Log.Debug("Debug test");
 
 
            try
            {
                throw new Exception("Test message");
            }
            catch (Exception ex)
            {
 
                Log.Error(ex.Message);
            }
        }
    }
}
Для логирования я создал Sql Server Compact базу данных и положил ее в рут солюшена.
Скрипт базы:

SQL
1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE [Logs] (
  [Id] INT IDENTITY (1,1) NOT NULL
, [DATE] datetime NOT NULL
, [Thread] nvarchar(255) NOT NULL
, [Level] nvarchar(50) NOT NULL
, [Logger] nvarchar(255) NOT NULL
, [Message] nvarchar(4000) NOT NULL
, [Exception] nvarchar(2000) NULL
);
GO
ALTER TABLE [Logs] ADD CONSTRAINT [PK_Logs] PRIMARY KEY ([Id]);
GO
В чем может быть затык? Почему при запуске программы база данных остается пустой?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2017, 11:17
Ответы с готовыми решениями:

Как реализовать считывание из файла и занести данные в базу sql compact
как реализовать необходимо сделать считывание из файла вообщем есть файлы выписки казначейства...

Как создать базу данных SQL Server Compact?
Установила SQL Server 2005.(((( Хотела в Management Studio создать базу данных SQL Server Compact....

Как подключить к проекту локальную базу данных SQL Server Compact 4.0
Добрый день всем Ребята подскажите как подключить к проэкту Локальную базу данных SQL Server...

Как в VS 2010 создать базу данных SQL Server Compact Edition 4.0
В списке есть только версия 3.5, но у меня установлен SQL Server Compact Edition 4-ой версии точно.

0
15.06.2017, 11:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2017, 11:17
Помогаю со студенческими работами здесь

Как средствами джавы реализовать просмотр базы данных Access, SQL Server, SQL Server Compact и запись в нее?
---

SQL Server Compact пересоздать базу данных
Есть приложение Win Forms .NET использующее базу данных на MS SQL Server Compact 3.5. Язык...

Не могу создать базу данных SQL Compact
Открываю добавить новый элемент. И ничего нету! Что за ерунда? Все перерыл в интернете, ни у...

Базу SQL Server Compact Edition 4.0 нельзя выбрать в качестве источника данных в проекте
Установлен Visual Studio Ultimate 2010 SP1, SQL Server Compact Edition 4.0 и Visual Studio 2010...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru