Skip to content

Commit

Permalink
Merge pull request #23 from habjoc/rx-update
Browse files Browse the repository at this point in the history
Update to 2.0.0
  • Loading branch information
habjoc committed Aug 17, 2018
2 parents 7fbd45a + 3dd701e commit 8d08ca7
Show file tree
Hide file tree
Showing 265 changed files with 7,094 additions and 58,377 deletions.
454 changes: 381 additions & 73 deletions .gitignore

Large diffs are not rendered by default.

65 changes: 21 additions & 44 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,56 +1,33 @@
### Log Wizard - a Log Viewer that is easy and fun to use!

[![Join the chat at https://gitter.im/jtorjo/logwizard](https://badges.gitter.im/jtorjo/logwizard.svg)](https://gitter.im/jtorjo/logwizard?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![GitHub issues](https://img.shields.io/github/issues/jtorjo/logwizard.svg)](https://github.com/jtorjo/logwizard/issues)
[![GitHub issues](https://img.shields.io/github/issues/habjoc/logwizard.svg)](https://github.com/habjoc/logwizard/issues)

![LogWizard](https://github.com/jtorjo/logwizard/blob/master/src/images/lw_demo.gif)
![LogWizard](https://github.com/habjoc/logwizard/blob/master/src/images/lw_demo.gif)

I created **LogWizard** to help anyone that really needs to deal with logs, in order to _hunt down bugs and/or issues that happen somewhere else_ (read = at customer site).
This fork of the tool [LogWizard](https://github.com/jtorjo/logwizard) was created as part of a summer internship at Ranorex. It improves on the tool in various ways, also fixing and implementing some of the original repository's issues.

My focus has been on ease of use from the get go. When using LogWizard, most things should be easy. In case they're not - I've done something wrong :) Let me know!
Originally, **LogWizard** was created by [John Torjo](https://github.com/jtorjo):
> I created **LogWizard** to help anyone that really needs to deal with logs, in order to _hunt down bugs and/or issues that happen somewhere else_ (read = at customer site). My focus has been on ease of use from the get go. When using LogWizard, most things should be easy.
***

Want to download the **latest release**? Head over [here!](https://github.com/jtorjo/logwizard/releases)
Want to download the **latest release**? Head over [here!](https://github.com/habjoc/logwizard/releases)

Read about **LogWizard** on on <a href="http://www.codeproject.com" target="_blank">CodeProject</a> :
* <a href="http://www.codeproject.com/Articles/1023815/LogWizard-a-Log-Viewer-that-is-easy-and-fun-to-use" target="_blank">General (Introduction)</a>
* <a href="http://www.codeproject.com/Articles/1078310/Log-Wizard-Make-your-Logs-Look-Pretty" target="_blank"><b>Pretty Formatting! (v1.8+)</b></a> (2nd Best C# Article/Feb 2016)
* <a href="http://www.codeproject.com/Articles/1045528/LogWizard-Filter-your-Logs-Inside-out" target="_blank">Easy creation of Filters/Views</a>
* <a href="http://www.codeproject.com/Articles/1039389/LogWizard-Talk-About-your-Logs" target="_blank">Create/Share Notes on Logs</a>
* <a href="http://www.codeproject.com/Articles/1073292/Log-Wizard-Viewing-Windows-Event-Logs-Can-Be-Fun" target="_blank">Windows Event Logs</a>
Read about the [original tool](https://github.com/jtorjo/logwizard) on [CodeProject](http://www.codeproject.com/Articles/1023815/LogWizard-a-Log-Viewer-that-is-easy-and-fun-to-use).

***

My team and I have created a rather large piece of software that is running on thousands of machines every day. When our customers encounter an issue, they send us their logs. The software is pretty big, we run 10+ threads and log a lot of information. Focusing on a certain issue (the customer's) has always been rather complicated. And yes, we tried other Log Viewers, but lets just say they were not up to the task.

Here are some of LogWizard's features:
- **Easy to filter information** - easy to create filters, easy to turn on/off, easy to copy/paste/modify.
- As of 1.9, I've added another way to easily filter: [Snoop Around](Snoop)
- [**Pretty Formatting! (v1.8+)**](http://www.codeproject.com/Articles/1078310/Log-Wizard-Make-your-Logs-Look-Pretty) - You can have the information that matters to you most to just stand out of the crowd!
- [**nlog / log4net Enhanced Support**](https://github.com/jtorjo/logwizard/wiki/loglibraries) - It guesses the log (file/database) syntax from the nlog/log4net .config files
- **Coloring** - allow a filter to have a certain color - allow you visually identify important information (color-the-full-line or color just-what-matches). You can already see coloring in action in the first image above.
- **Easy to switch** from "My filtered view" to the "Full log" and back (**Alt-L**).
- **Easy to switch** between logs. All logs you open are kept in History. Switching between them is bliss - **Ctrl-H**.
- **Ease of use** - once you've set up your filters, getting to the information you care about is a piece of cake!
- **Hotkeys! Hotkeys! Hotkeys!** I'm a developer - mouse is too slow. I want to switch between views/logs/ toggle views on/off, whatever - just with [Hotkeys](Hotkeys).
- **Real-time monitoring** - drag and drop a file, and monitor it live, as your program is writing to it
- **Windows Event Logs** - as of version [1.6](https://github.com/jtorjo/logwizard/releases/tag/1.6.1), you can very easy view `Window Event Logs`. Just hit **Ctrl-O**, select `Windows Event Log` from the combo, and that's it! _It even works for viewing remote event logs!_
- **Debug Viewer** - as of version [1.6](https://github.com/jtorjo/logwizard/releases/tag/1.6.1), you can view anything your program outputs via `OutputDebugString`. You can view the information from all programs, or filter it just by your program name. Hit **Ctrl-O**, and select `DebugPrint`.
- **Database Support**. Can read from common databases, such as MSSQL, Oracle, SQLite. Bonus - drop an Sqlite database onto Logwizard and it automatically guesses the log table + log fields
- **View Summary** - show me how many lines a certain view has. For example, I have View that shows me notifications, errors, and fatal errors. When I open a log, the first thing I check is - how many lines are in that view? If too many, that's the first View I look at.
- **Remember my settings**. I don't want to have to specify the same thing twice. Once - then reuse it for as many logs as you want!
- **Auto-saving** - you don't need to save anything. Everything you set is automatically saved by default
- **Show/Hide/Move Columns** - just right click on the Columns header. You can edit them as easy as possible. And next time you open LogWizard, it remembers what you've done!

There's more:
- **Search-as-you-go** - start typing - LogWizard will take you to the first column that contains the given text, and also highlight the text you typed. And, just use F3/Shift-F3 (Find-Next/Find-Previous), and they will instantly take you to the next/previous occurrence of what you just typed!
- **Smart Find, with Preview** - First off - Find (**Ctrl-F**) can handle regex-es. But more to the point, it will show you a preview of what you would find. This is extremely useful when you're typing a regex, which is so easy to get wrong the first few times...
- **Go to Line/Time** - with a twist! It allows offsets, and understands lots of time formats! Just hit **Ctrl-G**, and enjoy!
- **Clipboard-Friendly** - select several rows, press **Ctrl-C** or **Ctrl-Shift-C**, and they are copied to clipboard, preserving the _colors!_
- **Details pane** - If you have lots of columns, or multi-line columns, or both, we have a Details pane (**Ctrl-D**). You can choose what gets shown there so that it doesn't clog your main View!
- **Show me just what I want** - Yes, we have lots of [Toggles](Toggles)! You can toggle information on/off - so that you get the most of your screen! You can toggle on/off the Details pane - so that it's shown only when you need it. Same for the Filters pane (where you edit your filters) - which most of the time, you want it hidden. There are plenty more you can show/hide, so that you get as much information as possible!

I welcome any feedback you may have, and any suggestions are welcome as well.

If you discover an issue/problem/bug - please upload the problematic log file somewhere I can download it; probably the easiest place would be [dropbox](http://www.dropbox.com). Then create a github issue, with a link to the uploaded log. I'll do my best to answer ASAP.
Thanks!
#### Features

- **Easy to filter information** - Easily create filters, turn them on/off, and copy/paste/modify them.
- **Configurable Syntax** - Detect a log's syntax automatically, configure it manually or use nlog/log4net's configuration
- **Coloring** - Use filters to make information stand out
- **Hotkeys** - Use the keyboard to control what happens
- **Real-time monitoring** - Monitor a log file while it's being written to
- **Windows Event Logs** - Monitor local and remote Windows Event Logs
- **Debug Viewer** - Monitor outputs via `OutputDebugString`
- **Database Support**. Read from common databases, such as MSSQL, Oracle, SQLite
- **Configurable Columns** - Add/move/remove columns with a right click on the column header
- **Search** - Search for log entries with regexes
- **Details** - Get detailed log information in a separate details pane
- **Selective Information** - Show and hide different panes to control what to see
66 changes: 41 additions & 25 deletions src/LogWizard.csproj
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
Expand All @@ -10,7 +10,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>LogWizard</RootNamespace>
<AssemblyName>LogWizard</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>
<TargetFrameworkProfile>
</TargetFrameworkProfile>
<FileAlignment>512</FileAlignment>
Expand All @@ -29,6 +29,8 @@
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<PlatformTarget>x86</PlatformTarget>
Expand Down Expand Up @@ -120,32 +122,39 @@
<ApplicationIcon>app.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="EntityFramework">
<HintPath>packages\EntityFramework.6.0.2\lib\net45\EntityFramework.dll</HintPath>
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll</HintPath>
</Reference>
<Reference Include="EntityFramework.SqlServer">
<HintPath>packages\EntityFramework.6.0.2\lib\net45\EntityFramework.SqlServer.dll</HintPath>
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll</HintPath>
</Reference>
<Reference Include="log4net">
<HintPath>packages\log4net.2.0.5\lib\net45-full\log4net.dll</HintPath>
<Reference Include="ListViewPrinter, Version=2.7.1.31255, Culture=neutral, processorArchitecture=MSIL">
<HintPath>packages\ObjectListView.2.7.1.5\lib\ListViewPrinter.dll</HintPath>
</Reference>
<Reference Include="Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>packages\Oracle.ManagedDataAccess.12.1.2400\lib\net40\Oracle.ManagedDataAccess.dll</HintPath>
<Reference Include="log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>packages\log4net.2.0.8\lib\net45-full\log4net.dll</HintPath>
</Reference>
<Reference Include="ObjectListView, Version=2.7.1.31255, Culture=neutral, PublicKeyToken=b1c5bf581481bcd4, processorArchitecture=MSIL">
<HintPath>packages\ObjectListView.2.7.1.5\lib\ObjectListView.dll</HintPath>
</Reference>
<Reference Include="Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=MSIL">
<HintPath>packages\Oracle.ManagedDataAccess.12.2.1100\lib\net40\Oracle.ManagedDataAccess.dll</HintPath>
</Reference>
<Reference Include="SparkleLibrary, Version=2.7.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>packages\ObjectListView.2.7.1.5\lib\SparkleLibrary.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Data.SQLite, Version=1.0.99.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>packages\System.Data.SQLite.Core.1.0.99.0\lib\net45\System.Data.SQLite.dll</HintPath>
<Reference Include="System.Data.SQLite, Version=1.0.108.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>packages\System.Data.SQLite.Core.1.0.108.0\lib\net45\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Data.SQLite.EF6">
<HintPath>packages\System.Data.SQLite.EF6.1.0.99.0\lib\net45\System.Data.SQLite.EF6.dll</HintPath>
<Reference Include="System.Data.SQLite.EF6, Version=1.0.108.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>packages\System.Data.SQLite.EF6.1.0.108.0\lib\net45\System.Data.SQLite.EF6.dll</HintPath>
</Reference>
<Reference Include="System.Data.SQLite.Linq">
<HintPath>packages\System.Data.SQLite.Linq.1.0.99.0\lib\net45\System.Data.SQLite.Linq.dll</HintPath>
<Reference Include="System.Data.SQLite.Linq, Version=1.0.108.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>packages\System.Data.SQLite.Linq.1.0.108.0\lib\net45\System.Data.SQLite.Linq.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Serialization.Formatters.Soap" />
<Reference Include="System.Web.Extensions" />
Expand Down Expand Up @@ -193,7 +202,6 @@
<None Include="app.config">
<SubType>Designer</SubType>
</None>
<None Include="docs\todo.internal.txt" />
<Content Include="icons\arrow.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
Expand Down Expand Up @@ -266,7 +274,9 @@
</Content>
<None Include="docs\event_log.md" />
<None Include="docs\v1_9.md" />
<None Include="packages.config" />
<None Include="packages.config">
<SubType>Designer</SubType>
</None>
<None Include="Properties\app.manifest" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
Expand Down Expand Up @@ -339,18 +349,24 @@
<Project>{5d703fc5-ea9a-4bbb-bf08-e3a80efddaa8}</Project>
<Name>color_picker</Name>
</ProjectReference>
<ProjectReference Include="lw_common\3rdparty\ObjectListView\ObjectListView2012.csproj">
<Project>{18feda0c-d147-4286-b39a-01204808106a}</Project>
<Name>ObjectListView2012</Name>
</ProjectReference>
<ProjectReference Include="lw_common\lw_common.csproj">
<Project>{d7c0968b-59ca-4f94-a875-ef9de8f098eb}</Project>
<Name>lw_common</Name>
</ProjectReference>
<ProjectReference Include="SyntaxDetector\SyntaxDetector.csproj">
<Project>{3ac3f327-0da9-4991-9ac7-69fb55dfc04a}</Project>
<Name>SyntaxDetector</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="packages\System.Data.SQLite.Core.1.0.99.0\build\net45\System.Data.SQLite.Core.targets" Condition="Exists('packages\System.Data.SQLite.Core.1.0.99.0\build\net45\System.Data.SQLite.Core.targets')" />
<Import Project="packages\System.Data.SQLite.Core.1.0.108.0\build\net45\System.Data.SQLite.Core.targets" Condition="Exists('packages\System.Data.SQLite.Core.1.0.108.0\build\net45\System.Data.SQLite.Core.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('packages\System.Data.SQLite.Core.1.0.108.0\build\net45\System.Data.SQLite.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\System.Data.SQLite.Core.1.0.108.0\build\net45\System.Data.SQLite.Core.targets'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
Expand Down
Loading

0 comments on commit 8d08ca7

Please sign in to comment.