diff --git a/EventLogLoader/EventLogLoaderDebug.vbproj b/EventLogLoader/EventLogLoaderDebug.vbproj
index 6291eb9..8dc463d 100644
--- a/EventLogLoader/EventLogLoaderDebug.vbproj
+++ b/EventLogLoader/EventLogLoaderDebug.vbproj
@@ -130,9 +130,6 @@
Designer
-
-
-
MyApplicationCodeGenerator
Application.Designer.vb
diff --git a/EventLogLoaderManager/Form1.Designer.vb b/EventLogLoaderManager/Form1.Designer.vb
index 66dc9ad..798661b 100644
--- a/EventLogLoaderManager/Form1.Designer.vb
+++ b/EventLogLoaderManager/Form1.Designer.vb
@@ -30,10 +30,10 @@ Partial Class Form1
Me.IBEvLogSize = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.InfobaseLogPath = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.ESServerName = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
+ Me.StartAt = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
Me.ConnectionStringBox = New System.Windows.Forms.TextBox()
Me.Label1 = New System.Windows.Forms.Label()
Me.Button4 = New System.Windows.Forms.Button()
- Me.Label3 = New System.Windows.Forms.Label()
Me.ESIndexNameTextBox = New System.Windows.Forms.TextBox()
Me.DBType = New System.Windows.Forms.ComboBox()
Me.Button6 = New System.Windows.Forms.Button()
@@ -45,14 +45,17 @@ Partial Class Form1
Me.Button2 = New System.Windows.Forms.Button()
Me.RepeatTime = New System.Windows.Forms.TextBox()
Me.Label4 = New System.Windows.Forms.Label()
- Me.LinkLabel2 = New System.Windows.Forms.LinkLabel()
Me.LinkLabel1 = New System.Windows.Forms.LinkLabel()
Me.LinkLabel3 = New System.Windows.Forms.LinkLabel()
Me.Label5 = New System.Windows.Forms.Label()
Me.UseSynonymsForFieldsNamesCheckBox = New System.Windows.Forms.CheckBox()
Me.Label6 = New System.Windows.Forms.Label()
- Me.StartAt = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
+ Me.GroupBox2 = New System.Windows.Forms.GroupBox()
+ Me.LabelIndexNameExample = New System.Windows.Forms.Label()
+ Me.CheckBoxSplitIndexByPeriods = New System.Windows.Forms.CheckBox()
+ Me.ComboBoxESIndexPostfix = New System.Windows.Forms.ComboBox()
Me.GroupBox1.SuspendLayout()
+ Me.GroupBox2.SuspendLayout()
Me.SuspendLayout()
'
'ListView
@@ -64,7 +67,7 @@ Partial Class Form1
Me.ListView.GridLines = True
Me.ListView.Location = New System.Drawing.Point(3, 20)
Me.ListView.Name = "ListView"
- Me.ListView.Size = New System.Drawing.Size(746, 327)
+ Me.ListView.Size = New System.Drawing.Size(746, 273)
Me.ListView.TabIndex = 1
Me.ListView.UseCompatibleStateImageBehavior = False
Me.ListView.View = System.Windows.Forms.View.Details
@@ -104,6 +107,11 @@ Partial Class Form1
Me.ESServerName.Text = "Имя сервера для ES"
Me.ESServerName.Width = 180
'
+ 'StartAt
+ '
+ Me.StartAt.Text = "Начальная дата"
+ Me.StartAt.Width = 150
+ '
'ConnectionStringBox
'
Me.ConnectionStringBox.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
@@ -116,11 +124,11 @@ Partial Class Form1
'Label1
'
Me.Label1.AutoSize = True
- Me.Label1.Font = New System.Drawing.Font("Tahoma", 10.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
+ Me.Label1.Font = New System.Drawing.Font("Tahoma", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
Me.Label1.ForeColor = System.Drawing.Color.Maroon
Me.Label1.Location = New System.Drawing.Point(4, 4)
Me.Label1.Name = "Label1"
- Me.Label1.Size = New System.Drawing.Size(450, 17)
+ Me.Label1.Size = New System.Drawing.Size(402, 17)
Me.Label1.TabIndex = 3
Me.Label1.Text = "Строка соединения с базой данных для записи событий ЖР"
'
@@ -134,24 +142,11 @@ Partial Class Form1
Me.Button4.Text = "Проверить"
Me.Button4.UseVisualStyleBackColor = True
'
- 'Label3
- '
- Me.Label3.AutoSize = True
- Me.Label3.Font = New System.Drawing.Font("Tahoma", 10.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
- Me.Label3.ForeColor = System.Drawing.Color.Maroon
- Me.Label3.Location = New System.Drawing.Point(4, 74)
- Me.Label3.Name = "Label3"
- Me.Label3.Size = New System.Drawing.Size(197, 17)
- Me.Label3.TabIndex = 10
- Me.Label3.Text = "Имя индекса ElasticSearch"
- '
'ESIndexNameTextBox
'
- Me.ESIndexNameTextBox.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
- Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
- Me.ESIndexNameTextBox.Location = New System.Drawing.Point(449, 74)
+ Me.ESIndexNameTextBox.Location = New System.Drawing.Point(107, 21)
Me.ESIndexNameTextBox.Name = "ESIndexNameTextBox"
- Me.ESIndexNameTextBox.Size = New System.Drawing.Size(156, 20)
+ Me.ESIndexNameTextBox.Size = New System.Drawing.Size(169, 24)
Me.ESIndexNameTextBox.TabIndex = 9
'
'DBType
@@ -182,11 +177,11 @@ Partial Class Form1
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.GroupBox1.Controls.Add(Me.ListView)
- Me.GroupBox1.Font = New System.Drawing.Font("Tahoma", 10.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
+ Me.GroupBox1.Font = New System.Drawing.Font("Tahoma", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
Me.GroupBox1.ForeColor = System.Drawing.Color.Maroon
- Me.GroupBox1.Location = New System.Drawing.Point(4, 100)
+ Me.GroupBox1.Location = New System.Drawing.Point(4, 154)
Me.GroupBox1.Name = "GroupBox1"
- Me.GroupBox1.Size = New System.Drawing.Size(752, 350)
+ Me.GroupBox1.Size = New System.Drawing.Size(752, 296)
Me.GroupBox1.TabIndex = 5
Me.GroupBox1.TabStop = False
Me.GroupBox1.Text = "Обнаруженные информационные базы 1С"
@@ -194,11 +189,11 @@ Partial Class Form1
'Label2
'
Me.Label2.AutoSize = True
- Me.Label2.Font = New System.Drawing.Font("Tahoma", 10.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
+ Me.Label2.Font = New System.Drawing.Font("Tahoma", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
Me.Label2.ForeColor = System.Drawing.Color.Maroon
Me.Label2.Location = New System.Drawing.Point(4, 49)
Me.Label2.Name = "Label2"
- Me.Label2.Size = New System.Drawing.Size(439, 17)
+ Me.Label2.Size = New System.Drawing.Size(389, 17)
Me.Label2.TabIndex = 3
Me.Label2.Text = "Интервал между циклами чтения событий из ЖР (секунд)"
'
@@ -273,17 +268,6 @@ Partial Class Form1
Me.Label4.TabIndex = 22
Me.Label4.Text = "Описание и страница для обратной связи:"
'
- 'LinkLabel2
- '
- Me.LinkLabel2.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
- Me.LinkLabel2.AutoSize = True
- Me.LinkLabel2.Location = New System.Drawing.Point(662, 530)
- Me.LinkLabel2.Name = "LinkLabel2"
- Me.LinkLabel2.Size = New System.Drawing.Size(102, 13)
- Me.LinkLabel2.TabIndex = 20
- Me.LinkLabel2.TabStop = True
- Me.LinkLabel2.Text = "© Aleksey.Bochkov"
- '
'LinkLabel1
'
Me.LinkLabel1.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
@@ -319,39 +303,81 @@ Partial Class Form1
'UseSynonymsForFieldsNamesCheckBox
'
Me.UseSynonymsForFieldsNamesCheckBox.AutoSize = True
- Me.UseSynonymsForFieldsNamesCheckBox.Location = New System.Drawing.Point(611, 77)
+ Me.UseSynonymsForFieldsNamesCheckBox.ForeColor = System.Drawing.Color.Black
+ Me.UseSynonymsForFieldsNamesCheckBox.Location = New System.Drawing.Point(13, 50)
Me.UseSynonymsForFieldsNamesCheckBox.Name = "UseSynonymsForFieldsNamesCheckBox"
- Me.UseSynonymsForFieldsNamesCheckBox.Size = New System.Drawing.Size(15, 14)
+ Me.UseSynonymsForFieldsNamesCheckBox.Size = New System.Drawing.Size(237, 21)
Me.UseSynonymsForFieldsNamesCheckBox.TabIndex = 23
+ Me.UseSynonymsForFieldsNamesCheckBox.Text = "Использовать свои имена полей"
Me.UseSynonymsForFieldsNamesCheckBox.UseVisualStyleBackColor = True
'
'Label6
'
- Me.Label6.Location = New System.Drawing.Point(632, 72)
+ Me.Label6.ForeColor = System.Drawing.Color.Black
+ Me.Label6.Location = New System.Drawing.Point(6, 23)
Me.Label6.Name = "Label6"
- Me.Label6.Size = New System.Drawing.Size(117, 27)
+ Me.Label6.Size = New System.Drawing.Size(96, 22)
Me.Label6.TabIndex = 24
- Me.Label6.Text = "Использовать свои имена полей"
+ Me.Label6.Text = "Имя индекса"
'
- 'StartAt
+ 'GroupBox2
'
- Me.StartAt.Text = "Начальная дата"
- Me.StartAt.Width = 150
+ Me.GroupBox2.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.GroupBox2.Controls.Add(Me.LabelIndexNameExample)
+ Me.GroupBox2.Controls.Add(Me.CheckBoxSplitIndexByPeriods)
+ Me.GroupBox2.Controls.Add(Me.ComboBoxESIndexPostfix)
+ Me.GroupBox2.Controls.Add(Me.Label6)
+ Me.GroupBox2.Controls.Add(Me.ESIndexNameTextBox)
+ Me.GroupBox2.Controls.Add(Me.UseSynonymsForFieldsNamesCheckBox)
+ Me.GroupBox2.Font = New System.Drawing.Font("Tahoma", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.GroupBox2.ForeColor = System.Drawing.Color.Maroon
+ Me.GroupBox2.Location = New System.Drawing.Point(6, 70)
+ Me.GroupBox2.Name = "GroupBox2"
+ Me.GroupBox2.Size = New System.Drawing.Size(750, 78)
+ Me.GroupBox2.TabIndex = 25
+ Me.GroupBox2.TabStop = False
+ Me.GroupBox2.Text = "Параметры для ElasticSearch"
+ '
+ 'LabelIndexNameExample
+ '
+ Me.LabelIndexNameExample.AutoSize = True
+ Me.LabelIndexNameExample.Location = New System.Drawing.Point(283, 51)
+ Me.LabelIndexNameExample.Name = "LabelIndexNameExample"
+ Me.LabelIndexNameExample.Size = New System.Drawing.Size(166, 17)
+ Me.LabelIndexNameExample.TabIndex = 28
+ Me.LabelIndexNameExample.Text = "Пример имени индекса: "
+ '
+ 'CheckBoxSplitIndexByPeriods
+ '
+ Me.CheckBoxSplitIndexByPeriods.AutoSize = True
+ Me.CheckBoxSplitIndexByPeriods.ForeColor = System.Drawing.Color.Black
+ Me.CheckBoxSplitIndexByPeriods.Location = New System.Drawing.Point(283, 23)
+ Me.CheckBoxSplitIndexByPeriods.Name = "CheckBoxSplitIndexByPeriods"
+ Me.CheckBoxSplitIndexByPeriods.Size = New System.Drawing.Size(329, 21)
+ Me.CheckBoxSplitIndexByPeriods.TabIndex = 27
+ Me.CheckBoxSplitIndexByPeriods.Text = "Разделять индекс по периодам с постфиксом:"
+ Me.CheckBoxSplitIndexByPeriods.UseVisualStyleBackColor = True
+ '
+ 'ComboBoxESIndexPostfix
+ '
+ Me.ComboBoxESIndexPostfix.FormattingEnabled = True
+ Me.ComboBoxESIndexPostfix.Items.AddRange(New Object() {"yyyy", "yyyyMM", "yyyyMMdd", "yyyyMMddHH"})
+ Me.ComboBoxESIndexPostfix.Location = New System.Drawing.Point(618, 22)
+ Me.ComboBoxESIndexPostfix.Name = "ComboBoxESIndexPostfix"
+ Me.ComboBoxESIndexPostfix.Size = New System.Drawing.Size(105, 24)
+ Me.ComboBoxESIndexPostfix.TabIndex = 26
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(768, 547)
- Me.Controls.Add(Me.Label6)
- Me.Controls.Add(Me.UseSynonymsForFieldsNamesCheckBox)
+ Me.Controls.Add(Me.GroupBox2)
Me.Controls.Add(Me.Label5)
Me.Controls.Add(Me.Label4)
- Me.Controls.Add(Me.LinkLabel2)
Me.Controls.Add(Me.LinkLabel3)
Me.Controls.Add(Me.LinkLabel1)
- Me.Controls.Add(Me.Label3)
- Me.Controls.Add(Me.ESIndexNameTextBox)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.DBType)
Me.Controls.Add(Me.ConnectionStringBox)
@@ -369,6 +395,8 @@ Partial Class Form1
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = "Form1"
Me.GroupBox1.ResumeLayout(False)
+ Me.GroupBox2.ResumeLayout(False)
+ Me.GroupBox2.PerformLayout()
Me.ResumeLayout(False)
Me.PerformLayout()
@@ -391,15 +419,17 @@ Partial Class Form1
Friend WithEvents InfobaseLogPath As System.Windows.Forms.ColumnHeader
Friend WithEvents DBType As System.Windows.Forms.ComboBox
Friend WithEvents ButtonAddPath As System.Windows.Forms.Button
- Friend WithEvents Label3 As Label
Friend WithEvents ESIndexNameTextBox As TextBox
Friend WithEvents ESServerName As ColumnHeader
Friend WithEvents Label4 As Label
- Friend WithEvents LinkLabel2 As LinkLabel
Friend WithEvents LinkLabel1 As LinkLabel
Friend WithEvents LinkLabel3 As LinkLabel
Friend WithEvents Label5 As Label
Friend WithEvents UseSynonymsForFieldsNamesCheckBox As CheckBox
Friend WithEvents Label6 As Label
Friend WithEvents StartAt As ColumnHeader
+ Friend WithEvents GroupBox2 As GroupBox
+ Friend WithEvents LabelIndexNameExample As Label
+ Friend WithEvents CheckBoxSplitIndexByPeriods As CheckBox
+ Friend WithEvents ComboBoxESIndexPostfix As ComboBox
End Class
diff --git a/EventLogLoaderManager/Form1.vb b/EventLogLoaderManager/Form1.vb
index a77c9a7..e3ba786 100644
--- a/EventLogLoaderManager/Form1.vb
+++ b/EventLogLoaderManager/Form1.vb
@@ -14,6 +14,15 @@ Public Class Form1
Dim ConfigSetting As ConfigSetting = New ConfigSetting
+ Public Sub New()
+
+ ' This call is required by the designer.
+ InitializeComponent()
+
+ ' Add any initialization after the InitializeComponent() call.
+
+ End Sub
+
Sub LoadConfigSetting()
ConfigSetting = ConfigSettingsModule.LoadConfigSettingFromFile(PathConfigFile)
@@ -94,6 +103,15 @@ Public Class Form1
If String.IsNullOrEmpty(ConfigSetting.ESFieldSynonyms.UserName) Then
ConfigSetting.ESFieldSynonyms.UserName = "ИмяПользователя"
End If
+ If String.IsNullOrEmpty(ConfigSetting.ESFieldSynonyms.Transaction) Then
+ ConfigSetting.ESFieldSynonyms.Transaction = "ТранзакцияНомер"
+ End If
+ If String.IsNullOrEmpty(ConfigSetting.ESFieldSynonyms.TransactionStartTime) Then
+ ConfigSetting.ESFieldSynonyms.TransactionStartTime = "ТранзакцияВремя"
+ End If
+ If String.IsNullOrEmpty(ConfigSetting.ESFieldSynonyms.TransactionStatus) Then
+ ConfigSetting.ESFieldSynonyms.TransactionStatus = "ТранзакцияСтатус"
+ End If
ConnectionStringBox.Text = ConfigSetting.ConnectionString
DBType.Text = ConfigSetting.DBType
@@ -101,6 +119,9 @@ Public Class Form1
ESIndexNameTextBox.Text = ConfigSetting.ESIndexName
UseSynonymsForFieldsNamesCheckBox.Checked = ConfigSetting.ESUseSynonymsForFieldsNames
+ CheckBoxSplitIndexByPeriods.Checked = Not String.IsNullOrEmpty(ConfigSetting.ESUseIndexPostfix)
+ ComboBoxESIndexPostfix.Text = ConfigSetting.ESUseIndexPostfix
+
End Sub
@@ -142,6 +163,10 @@ Public Class Form1
NewConfigSetting.DBType = DBType.Text.Trim
NewConfigSetting.ESIndexName = ESIndexNameTextBox.Text
+ If CheckBoxSplitIndexByPeriods.Checked Then
+ NewConfigSetting.ESUseIndexPostfix = ComboBoxESIndexPostfix.Text
+ End If
+
For Each Item As ListViewItem In ListView.Items
If Item.Checked Then
@@ -165,7 +190,6 @@ Public Class Form1
NewConfigSetting.RepeatTime = IIf(Rep = 0, 60, Rep)
ConfigSettingsModule.SaveConfigSettingToFile(NewConfigSetting, PathConfigFile)
-
Dim sc = New System.ServiceProcess.ServiceController("EventLog loader service")
Try
If sc.Status = ServiceProcess.ServiceControllerStatus.Running Then
@@ -235,6 +259,8 @@ Public Class Form1
RefreshInfobaseList()
+ ShowIndexNameExample()
+
End Sub
@@ -552,7 +578,7 @@ Public Class Form1
End Sub
- Private Sub LinkLabel2_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLabel2.LinkClicked
+ Private Sub LinkLabel2_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs)
Process.Start("https://github.com/alekseybochkov/")
End Sub
@@ -564,4 +590,29 @@ Public Class Form1
Process.Start("https://github.com/alekseybochkov/EventLogLoader/")
End Sub
+ Private Sub ESIndexNameTextBox_TextChanged(sender As Object, e As EventArgs) Handles ESIndexNameTextBox.TextChanged
+
+ ShowIndexNameExample()
+
+ End Sub
+
+ Sub ShowIndexNameExample()
+
+ Dim Postfix = ""
+
+ If CheckBoxSplitIndexByPeriods.Checked Then
+ Postfix = Now.ToString(ComboBoxESIndexPostfix.Text)
+ End If
+
+ LabelIndexNameExample.Text = "Пример имени индекса: " + ESIndexNameTextBox.Text + Postfix
+
+ End Sub
+
+ Private Sub ComboBoxESIndexPostfix_TextChanged(sender As Object, e As EventArgs) Handles ComboBoxESIndexPostfix.TextChanged
+ ShowIndexNameExample()
+ End Sub
+
+ Private Sub CheckBoxSplitIndexByPeriods_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBoxSplitIndexByPeriods.CheckedChanged
+ ShowIndexNameExample()
+ End Sub
End Class
diff --git a/EventLogLoaderService/ConfigSettings.vb b/EventLogLoaderService/ConfigSettings.vb
index 7380349..35cff13 100644
--- a/EventLogLoaderService/ConfigSettings.vb
+++ b/EventLogLoaderService/ConfigSettings.vb
@@ -32,6 +32,9 @@ Public Module ConfigSettingsModule
Public SecondaryPort As String
Public Application As String
Public UserName As String
+ Public Transaction As String
+ Public TransactionStatus As String
+ Public TransactionStartTime As String
End Class
Class ConfigSetting
@@ -39,6 +42,7 @@ Public Module ConfigSettingsModule
Public DBType As String = ""
Public RepeatTime As Integer = 0
Public ESIndexName As String = ""
+ Public ESUseIndexPostfix As String = ""
Public ESUseSynonymsForFieldsNames As Boolean = False
Public ESFieldSynonyms As ElasticSearchFieldSynonymsClass
Public Infobases As List(Of InfobaseSetting)
diff --git a/EventLogLoaderService/EventLogProcessor.vb b/EventLogLoaderService/EventLogProcessor.vb
index 4f102c0..74c206d 100644
--- a/EventLogLoaderService/EventLogProcessor.vb
+++ b/EventLogLoaderService/EventLogProcessor.vb
@@ -206,11 +206,15 @@ Public Class EventLogProcessor
Public SecondaryPort As Integer
Public Server As String
Public SessionDataSplitCode As Integer
+ Public TransactionStatus As String
+ Public Transaction As Integer
+ Public TransactionStartTime As Date
End Class
Public EventsList As List(Of OneEventRecord) = New List(Of OneEventRecord)
Public ESIndexName As String
+ Public ESIndexPostfix As String
Public ESServerName As String
Public InfobaseName As String
@@ -848,9 +852,25 @@ Public Class EventLogProcessor
Dim _current = New ElasticClient(_settings)
'Let's create proper array for ES
- Dim NewRecords As List(Of Object) = New List(Of Object)
+ Dim NewRecordsByIndex As Dictionary(Of String, List(Of Object)) = New Dictionary(Of String, List(Of Object))
+ 'Dim NewRecords As List(Of Object) = New List(Of Object)
For Each EventRecord In EventsList
+
+ Dim TargetIndexName = ESIndexName
+ If ESIndexPostfix.Length > 0 Then
+ Try
+ TargetIndexName = TargetIndexName + EventRecord.DateTime.ToString(ESIndexPostfix)
+ Catch ex As Exception
+ End Try
+ End If
+
+ If Not NewRecordsByIndex.ContainsKey(TargetIndexName) Then
+ NewRecordsByIndex.Add(TargetIndexName, New List(Of Object))
+ End If
+
+
+
Dim ESRecord = New ESRecord With {.ServerName = ESServerName, .DatabaseName = InfobaseName}
ESRecord.RowID = EventRecord.RowID
@@ -874,6 +894,9 @@ Public Class EventLogProcessor
ESRecord.Comment = EventRecord.Comment
ESRecord.SessionDataSplitCode = EventRecord.SessionDataSplitCode
+ ESRecord.Transaction = EventRecord.TransactionMark
+ ESRecord.TransactionStartTime = EventRecord.TransactionStartTime
+ ESRecord.TransactionStatus = EventRecord.TransactionStatus
Dim EventObj = New EventType
If DictEvents.TryGetValue(EventRecord.EventID, EventObj) Then
@@ -939,19 +962,50 @@ Public Class EventLogProcessor
ESRecordUserFields.Add(ESFieldSynonyms.Application, ESRecord.Application)
ESRecordUserFields.Add(ESFieldSynonyms.UserName, ESRecord.UserName)
- NewRecords.Add(ESRecordUserFields)
+ ESRecordUserFields.Add(ESFieldSynonyms.Transaction, ESRecord.Transaction)
+ ESRecordUserFields.Add(ESFieldSynonyms.TransactionStartTime, ESRecord.TransactionStartTime)
+ ESRecordUserFields.Add(ESFieldSynonyms.TransactionStatus, ESRecord.TransactionStatus)
+
+ 'NewRecords.Add(ESRecordUserFields)
+ NewRecordsByIndex(TargetIndexName).Add(ESRecordUserFields)
Else
- NewRecords.Add(ESRecord)
+ 'NewRecords.Add(ESRecord)
+ NewRecordsByIndex(TargetIndexName).Add(ESRecord)
End If
Next
- Dim Result = _current.IndexMany(NewRecords, ESIndexName, "event-log-record")
+ For Each NewRecordsKV In NewRecordsByIndex
+
+ Dim AttemptCount = 0
+
+ While True
+
+ Dim Result = _current.IndexMany(NewRecordsKV.Value, NewRecordsKV.Key, "event-log-record")
+ If Not Result.IsValid Then
+
+ If AttemptCount >= 5 Then
+ Throw New Exception("Writing attempts failed because <" + ConnectionString + "> server did not properly respond!")
+ End If
+
+ Console.WriteLine(Now.ToLongTimeString + " Error writing to the server <" + ConnectionString + ">. " + Result.OriginalException.Message + ". Waiting for 10 seconds...")
+ Threading.Thread.Sleep(10000)
+
+ Else
+ Console.WriteLine(Now.ToLongTimeString + " -> " + NewRecordsKV.Value.Count.ToString + " new records have been written to '" + NewRecordsKV.Key + "' index")
+ Exit While
+ End If
+
+ AttemptCount = AttemptCount + 1
+
+ End While
+
+ Next
+
- Console.WriteLine(Now.ToShortTimeString + " New records have been processed " + NewRecords.Count.ToString)
SaveReadParametersToFile()
@@ -1270,11 +1324,11 @@ Public Class EventLogProcessor
OneEvent.TransactionStatus = rs("transactionStatus")
OneEvent.TransactionMark = rs("transactionID")
- OneEvent.TransactionStartTime = New Date().AddYears(2000)
-
Try
If Not rs("transactionDate") = 0 Then
OneEvent.TransactionStartTime = New Date().AddSeconds(Convert.ToInt64(rs("transactionDate") / 10000))
+ Else
+ OneEvent.TransactionStartTime = New Date().AddYears(2000)
End If
Catch ex As Exception
End Try
@@ -1309,7 +1363,7 @@ Public Class EventLogProcessor
OneEvent.SessionNumber = rs("session")
OneEvent.SessionDataSplitCode = rs("sessionDataSplitCode")
- OneEvent.Transaction = ""
+ 'OneEvent.Transaction = ""
OneEvent.EventType = ""
EventsList.Add(OneEvent)
@@ -1600,7 +1654,7 @@ Public Class EventLogProcessor
While True
- Console.WriteLine(Now.ToShortTimeString + " Start new iteration...")
+ Console.WriteLine(Now.ToLongTimeString + " Start new iteration...")
Try
diff --git a/EventLogLoaderService/Service1.vb b/EventLogLoaderService/Service1.vb
index 589361e..11d9605 100644
--- a/EventLogLoaderService/Service1.vb
+++ b/EventLogLoaderService/Service1.vb
@@ -62,6 +62,7 @@ Public Class EventLogLoaderService
EventLogProcessorObj.ItIsMySQL = ItIsMySQL
EventLogProcessorObj.ItIsES = ItIsES
EventLogProcessorObj.ESIndexName = ConfigSettingObj.ESIndexName
+ EventLogProcessorObj.ESIndexPostfix = ConfigSettingObj.ESUseIndexPostfix
EventLogProcessorObj.ESServerName = IBConfig.ESServerName
EventLogProcessorObj.ESUseSynonymsForFieldsNames = ConfigSettingObj.ESUseSynonymsForFieldsNames
EventLogProcessorObj.ESFieldSynonyms = ConfigSettingObj.ESFieldSynonyms
@@ -82,7 +83,7 @@ Public Class EventLogLoaderService
Log.Error("File config.json was not found!")
End If
Catch ex As Exception
- Log.Error(ex, "Parameters cannot be load from config.json file (it may be corrupted)")
+ Log.Error(ex, "Parameters cannot be loaded from config.json (it may be corrupted)")
End Try