Добавлю к предыдущему посту.
Сегодня я написал первый в своей жизни VB скрипт:) Не без помощи конечно(спасибо мемберам с cyberforum). Для кого-то код будет ламерским, но он решает свою задачу. Стандартно NLog выводит информацию в файл в формате:
Над цветами еще конечно можно поработать, но остальное очевидно. Profit!
2012-08-31 12:08:06.6573|DEBUG|EVC.prog|Evconfig object was created. Start load configuration 2012-08-31 12:08:06.6846|DEBUG|EVC.Class1|Some additional informationОднако искать предупреждения или ошибки в куче такого текста, очень уныло. Вот я и решил немного подсластить пилюлю и раскрасить его. А делаю это так. Выводим в файл с расширением .log, ставим в свойствах файла Open with Excel. Теперь в самом Excel нужно добавить пару макросов. Как их добавлять можно легко найти на просторах интернета, отмечу лишь что лучше их сохранять в personal workbook. Тогда они будут доступны всегда, а не для определенного документа. Варианта открытия может быть 2. Первый, вы уже открыли Excel и теперь хотите импортировать в него лог. Тогда текст VB скрипта для макроса будет таким:
Sub LogView() Dim OpenDialog, i, d OpenDialog = Application.GetOpenFilename("Log Files (*.log),*.log,All Files (*.*),*.*", , "Выберите лог файл") If OpenDialog = "False" Then Exit Sub ' Импортируем указаный файл, разделение по столбцам по символу | Workbooks.OpenText Filename:=OpenDialog, Origin:=xlWindows, _ StartRow:=1, _ DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, _ Tab:=False, _ Semicolon:=False, _ Comma:=False, _ Space:=False, _ Other:=True, OtherChar:="|" ' Пробегаемся по всем строчкам и раскрашиваем в зависимости от содержания Dim cl As New Collection cl.Add RGB(245, 245, 220), "INFO" cl.Add RGB(224, 255, 255), "DEBUG" cl.Add RGB(255, 127, 80), "WARN" cl.Add RGB(255, 69, 0), "ERROR" cl.Add RGB(255, 0, 0), "FATAL" On Error Resume Next For Each i In Columns("B").SpecialCells(xlCellTypeConstants) i.EntireRow.Interior.Color = cl(i.Value) Next Err.Clear On Error GoTo 0 ' Еще раз разделим первый столбец. Отдельно дата, отдельно время. Columns("B").Insert Columns("A:A").Select Application.DisplayAlerts = False Selection.TextToColumns Destination:=Range("A:B"), _ DataType:=xlFixedWidth, _ OtherChar:="|", _ FieldInfo:=Array(Array(0, 5), Array(10, 1)), _ TrailingMinusNumbers:=True Application.DisplayAlerts = True ' Ширина столбцов на любителя Columns("A:A").ColumnWidth = 11 Columns("B:B").ColumnWidth = 15 Columns("C:C").ColumnWidth = 15 Columns("D:D").ColumnWidth = 30 Columns("E:E").ColumnWidth = 100 ' Тут сделаем выравнивание и установим wrap text для последнего информативного столбца With Columns("E") .HorizontalAlignment = xlGeneral .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With With Columns("B") .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("A1").Select End SubДля простоты добавил русских комментариев. Теперь другой вариант, когда вы открыли лог, запустился Excel, но все в одном столбце:
Sub ConvertToLog() Dim i,d Columns("A:A").Select Application.DisplayAlerts = False Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=False, Space:=False, Other:=True, _ OtherChar:="|", _ FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1)), _ TrailingMinusNumbers:=True Application.DisplayAlerts = True Dim cl As New Collection cl.Add RGB(245, 245, 220), "INFO" cl.Add RGB(224, 255, 255), "DEBUG" cl.Add RGB(255, 127, 80), "WARN" cl.Add RGB(255, 69, 0), "ERROR" cl.Add RGB(255, 0, 0), "FATAL" On Error Resume Next For Each i In Columns("B").SpecialCells(xlCellTypeConstants) i.EntireRow.Interior.Color = cl(i.Value) Next Err.Clear On Error GoTo 0 Columns("B").Insert Columns("A:A").Select Application.DisplayAlerts = False Selection.TextToColumns Destination:=Range("A:B"), _ DataType:=xlFixedWidth, _ OtherChar:="|", _ FieldInfo:=Array(Array(0, 5), Array(10, 1)), _ TrailingMinusNumbers:=True Application.DisplayAlerts = True ' Set width Columns("A:A").ColumnWidth = 11 Columns("B:B").ColumnWidth = 15 Columns("C:C").ColumnWidth = 15 Columns("D:D").ColumnWidth = 30 Columns("E:E").ColumnWidth = 100 ' Set text wrap With Columns("E") .HorizontalAlignment = xlGeneral .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With With Columns("B") .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("A1").Select End SubДополнительно я назначил хоткеи CTRL+SHIFT+L и CTRL+SHIFT+K и добавил их в Quick Access Toolbar.
Над цветами еще конечно можно поработать, но остальное очевидно. Profit!