Giter Club home page Giter Club logo

logbert's People

Contributors

a3305 avatar couchcoding avatar kaqq avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

logbert's Issues

Double exception...

Hello!
I found a strange display of exception in field "Message". It's has double exception. Is it a parsing bug ? I use Nlog with Chainsaw target.

<targets async="true">
    <target xsi:type="Chainsaw"
      name="chainsaw"
      encoding="utf-8"
      address="udp://127.0.0.1:9997"
      includeSourceInfo="true"
      includeCallSite="true"
      includeNLogData="true"
      appInfo="WebTest">
      <parameter layout="${aspnet-request-url}" name="url"/>
    </target>
  </targets>
  <rules>
    <logger name="*" minlevel="Info" writeTo="chainsaw" />
</rules>

This display at "Message details" - "Message" panel when a error came:

EXCEPTION 123
System.Web.HttpException (0x80004005): GUG
   в WebApplicationNetFramework.Controllers.HomeController.About() в C:\Users\Dm\source\repos\WebApplicationNetFramework\WebApplicationNetFramework\Controllers\HomeController.cs:строка 26
   в lambda_method(Closure , ControllerBase , Object[] )
   в System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
   в System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
   в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c.<BeginInvokeSynchronousActionMethod>b__9_0(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_0.<InvokeActionMethodFilterAsynchronouslyRecursive>b__0()
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_2.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2()
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass7_0.<BeginInvokeActionMethodWithFilters>b__1(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_6.<BeginInvokeAction>b__4()
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_1.<BeginInvokeAction>b__1(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult)
   в System.Web.Mvc.Controller.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   в System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
   в System.Web.Mvc.Controller.<>c.<BeginExecute>b__151_2(IAsyncResult asyncResult, Controller controller)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   в System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)
   в System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult)
   в System.Web.Mvc.MvcHandler.<>c.<BeginProcessRequest>b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   в System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
   в System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
   в System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   в System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
   в System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
System.Web.HttpException (0x80004005): GUG
   в WebApplicationNetFramework.Controllers.HomeController.About() в C:\Users\Dm\source\repos\WebApplicationNetFramework\WebApplicationNetFramework\Controllers\HomeController.cs:строка 26
   в lambda_method(Closure , ControllerBase , Object[] )
   в System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
   в System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
   в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c.<BeginInvokeSynchronousActionMethod>b__9_0(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_0.<InvokeActionMethodFilterAsynchronouslyRecursive>b__0()
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_2.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2()
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass7_0.<BeginInvokeActionMethodWithFilters>b__1(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_6.<BeginInvokeAction>b__4()
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_1.<BeginInvokeAction>b__1(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   в System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult)
   в System.Web.Mvc.Controller.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   в System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
   в System.Web.Mvc.Controller.<>c.<BeginExecute>b__151_2(IAsyncResult asyncResult, Controller controller)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   в System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)
   в System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult)
   в System.Web.Mvc.MvcHandler.<>c.<BeginProcessRequest>b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   в System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   в System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
   в System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
   в System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   в System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
   в System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

And this is a raw data at export :

raw data.txt

Ability to specify timestamp parsing format

First off, really cool viewer, great work! I'm not sure if you are still working on this or accepting issues/pull requests but figured I'd leave this here anyways.

I'm using the Custom File Receiver logger with a Columnizer that includes a Timestamp column type. The timestamps in the log files I'm viewing are in the format yyyy-MM-dd HH:mm:ss,fff, which is not correctly parsed, resulting in all the timestamps being displayed as 00:00:00. The other columns (non-timestamp) are fine.

In the Options->General Settings I tried setting the Timestamp Format but it seems to only affect the output format, not the parsed format.

Looking at the code, I'm guessing the issue is on this line where the value is being parsed but no format specification is specified so it just uses the current culture settings.

I'm not sure if it should be specified in the Columnizer settings or the general settings (probably the former since in theory one might have to deal with multiple different date formats).

Thanks!

How to configure .net core log4net to udp

in .net core (2.2 or 3.0) log4net config XmlLayoutSchemaLog4j Will not export any data.
How to configure log4net layout out to logbert Instead of using customization

[Request] Other Systems

Hey there,
I realize that the likelihood, and even the possibility of this is probably pretty close to zero, but I just wanted to throw out there that it would be really nice to have this on Linux as well. I know with newer dotnet stuff being cross-platform, I suppose I can hope with fingers crossed that one day it might be something that can be done. 👍

Thanks,
-MH

Open log files on webserver

Hi,
Sorry if this is not the correct place to ask question, but I couldn't a forum or a way to contact you.

Is it somehow possible to open log files hosted on a webserver on the intranet?
For example: http://intranet.company.com/folder/logfile.log

just pasting this in on of the File Receivers gives a message that the file does not exist.

Next to that, is it also possible to apply some transformation rules on the log file?
Due to working on OpenVMS we were in the past not able to use more than 120 chars on a single line, so our files are hard wrapped at 120 chars. Would be nice if we could transform them when opening.

Add support for ip address selection

Currently when openning a TCP \ UDP logger, it let me choose the network adapter and use its default IP address,
However, in case of multiple IP addresses for the same network adapters - logbert would just choose one of them and won't let me listen to the relevant IP+Port.

My request is - in addition to port, let me select the receiving IP address.

Thanks,
Oren,.

Missing logger configuration persistence

Thank you very much for this excellent project! There is just one feature I'm missing, missing it so much that I can't use the software on a daily basis: The configuration of the logger (type, port, adapter) is not stored, meaning that I have to configure it after every start of the application. Also if I use different logger configurations I can't re-establish them by loading a previous configuration.

Checkbox on Treeview

Is it possible to provide the Treeview with checkboxes to select one or more items when multiple loggers are available?
If you think that this feature might be of some interest for the app, I might fork the repo and implement it.

Ability to parse multiline logs

For Custom reciever, With Custom Columniser I was not been able to configure app to parse logs with massages that span across several lines
E.g.:

2019-01-01 23:31:42,052~ERROR~83~Class.One.Two.Three~Method~Message blah blah blah
Stack1
   at Stack.Stack...
some oher stuff
2019-01-01 23:31:44,999~INFO~83~Class.One.Two.Three~Method~Message blah blah 123

It does work with following regex in the test window
\d{4}-\d{2}-\d{2} \d{2}\:\d{2}\:\d{2}\,\d+?\~\w+?\~\d+?\~.+?\~.+?\~((?:.|\n)+?)(?=(?:\d{4}-\d{2}-\d{2} \d{2}\:\d{2}\:\d{2}\,\d+?\~)|\n$)
But when I try to open actual file, it does not parse it, and it appears to be empty

Large File throws OutOfMemoryException

Hey,

got a 1,8 GB Log File and got an OutOfMemoryException.
Using Version 1.5.6.1 on Windows 10

************** Ausnahmetext **************
System.OutOfMemoryException: Eine Ausnahme vom Typ "System.OutOfMemoryException" wurde ausgelöst.
bei System.String.Concat(String str0, String str1)
bei Couchcoding.Logbert.Receiver.Log4NetFileReceiver.Log4NetFileReceiver.ReadNewLogMessagesFromFile()
bei Couchcoding.Logbert.Receiver.Log4NetFileReceiver.Log4NetFileReceiver.Initialize(ILogHandler logHandler)
bei Couchcoding.Logbert.Dialogs.Docking.FrmLogDocument.OnLoad(EventArgs e)
bei System.Windows.Forms.Form.OnCreateControl()
bei System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
bei System.Windows.Forms.Control.CreateControl()
bei System.Windows.Forms.Control.SetVisibleCore(Boolean value)
bei System.Windows.Forms.Form.SetVisibleCore(Boolean value)
bei System.Windows.Forms.Control.set_Visible(Boolean value)
bei WeifenLuo.WinFormsUI.Docking.DockContentHandler.SetVisible()
bei WeifenLuo.WinFormsUI.Docking.DockPane.set_ActiveContent(IDockContent value)
bei WeifenLuo.WinFormsUI.Docking.DockContentHandler.Activate()
bei WeifenLuo.WinFormsUI.Docking.DockContentHandler.Show(DockPanel dockPanel, DockState dockState)
bei WeifenLuo.WinFormsUI.Docking.DockContentHandler.Show(DockPanel dockPanel)
bei WeifenLuo.WinFormsUI.Docking.DockContent.Show(DockPanel dockPanel)
bei Logbert.MainForm.LoadFileIntoLogger(String logFileToLoad, Boolean verbose)
bei Logbert.MainForm.MnuMainFileOpenLogFileClick(Object sender, EventArgs e)
bei System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
bei System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
bei System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
bei System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
bei System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
bei System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
bei System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
bei System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ScrollableControl.WndProc(Message& m)
bei System.Windows.Forms.ToolStrip.WndProc(Message& m)
bei System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Log to file with rotation

It would be good to be able to log to file, with the option for the maximum number of files, and the maximum log file size. I suppose this could be done with scripting, but I don't really know anything about Lua.

I agree with the persistence request too, with also the persistence of logging.

add source string Encoding in option

how to add Encoding config to
`c#
LogMessage newLogMsg = new LogMessageLog4Net(
Encoding.ASCII.GetString(receiveBytes)
, ++mLogNumber);

  messages.Add(new LogMessageSyslog(
        line
      , ++mLogNumber
      , mTimestampFormat));

`

Persistence of receivers

I noticed that after closing of the application, receivers don't recover of their state and options. May be should to add such feature?

64-bit LogBert?

If I want to use 64-bit LogBert, is there a package for that? It seems a little slow.

Otherwise, maybe I could compile it for 64-bit with the correct set of directions? I had a 4MB log file and it took a while to parse it all, so I was thinking that maybe the issue is with the fact that it's running 32-bit (I'm unsure if it's single threaded or not).

I see it's written in C# and you likely used VS 20XX to compile it.

Right Host

The code compares the wantedIpEndPoint.Address with the receivedIpEndPoint.Address, if it doesn't match, the already received bytes are not used, no message will be created, because isRightHost will be false. Because the wantedIpEndPoint must be configured when creating for example a Nlog UDP Receiver, this means that only messages sent from the host configured by selecting the Network adapter along with a IP address when creating the Receiver, can be received.

When looking at Log2Console, Receivers must be configured, but because usually you don't know nothing about the senders Network adapters, just a given IP Address has to be configured, thus allowing to receive UDP packets from that sender IP. This is the IP of the wanted endpoint and can be compared with the received endpoint. Indeed the "Senders" IP has to be configured, the receiver IP is the IP where Logbert is running. The local endpoint can be of course bound to a certain Network adapters IP, but never be compared with the senders IP.

Support for structured logs

Hi,

I tried to open a structured log file created by NLog (from File > Open log file menu) but the following error is displayed:

The file could not be open as a log file. Maybe the data the file contains is not yet supported by Logbert

This is how NLog is configured:

<target name="file" xsi:type="File"
            fileName="${basedir}/logs/app.log"
            archiveFileName="${basedir}/logs/archives/app.{#}.log"
            archiveEvery="Day"
            archiveNumbering="Rolling"
            maxArchiveFiles="14"
            archiveAboveSize="50000000"
            encoding="iso-8859-2">
      <layout xsi:type="JsonLayout">
        <attribute name="logid" layout="${guid:format=GeneratedFromLogEvent}" />
        <attribute name="date" layout="${longdate}" />
        <attribute name="level" layout="${level:upperCase=true}" />
        <attribute name="threadid" layout="${threadid}" />
        <attribute name="activityid" layout="${activityid}" />
        <attribute name="machinename" layout="${machinename}" />
        <attrribute name="key" layout="${mdlc:item=Key}" />
        <attribute name="method" layout="${stacktrace:format=Flat:topFrames=2:skipFrames=2}" />
        <attribute name="message" layout="${message}" />
        <attribute name="exception" layout="${exception:Format=tostring:maxInnerExceptionLevel=5:innerFormat=shortType,message,method}" />
      </layout>
    </target>
  </targets>

If structured logs are not supported what needs to be done to add this feature to Logbert?

Thanks,
Simo

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.